Hi everyone,
I’d like to raise an issue with the Unreal Color Picker UX. This topic has appeared in community discussions for almost a decade, but there is still no actual solution in the editor, and it continues to cause daily workflow problems for artists.
First, to be clear, we understand and fully support Unreal’s linear rendering pipeline and the need for material parameters to store FLinearColor values. This request is not about rendering correctness.
The issue is strictly Editor UX, specifically how the Color Picker handles sRGB Preview and slider behavior.
Artists typically author colors in sRGB-encoded (perceptual) space, where the midpoint (0.5) corresponds to ~0.21 in linear. This provides even perceptual control, especially in dark shades.
However, the Unreal color picker’s gradient sliders always remain in linear value positions, even when sRGB Preview is disabled. The sRGB Preview option affects only how the gradient is displayed, not the actual value space being edited.
This leads to two major problems:
- sRGB Preview OFF – Gradient looks perceptual, but picking a “middle gray” produces linear 0.5 (not ~0.21), which results in a visible mismatch between picker and resulting output.
- sRGB Preview ON – Display is correct, but the linear slider becomes extremely compressed in the dark range, making it almost impossible for artists to adjust dark colors with any precision.
Both modes therefore create confusion and inconsistent results. This is a long-standing issue - multiple forum threads going back 10 years describe the same problem (here is a good example: https://forums.unrealengine.com/t/how\-to\-set\-the\-proper\-color\-in\-color\-picker/304386\).
For teams with a lot of runtime color customization (e.g., kits, characters, UI themes), this becomes a daily workflow bottleneck.
As an example, I’ve attached a GIF showing how Blender handles this correctly. Blender lets artists adjust colors using sRGB-encoded gradients, but the numeric value shown in the picker is always the correctly mapped linear value. When dragging the slider, you see the linear value change exponentially (as expected from the sRGB transfer curve), so the authoring remains perceptually intuitive while the underlying data remains physically correct.
Importantly, this approach affects only the widget behavior, not the underlying serialized data. The stored linear values remain exactly the same. Implementing a similar mapping in Unreal would not break existing assets or change engine behavior, but it would significantly improve the day-to-day workflow for artists working with color.
[Attachment Removed]