It seems to me that the "Value" value when picking a color in HSV space behaves nonlinear. enter image description here

In this example Value is set to .5 I'd expect the white dot in the grayscale "slider" to appear in the center at 50% gray but it shows at maybe 75%. Is this intended? If not how can I make it match up? I played a bit with the color-management settings but they only influence how the color is displayed in rendered mode.

  • 1
    $\begingroup$ Hi :). Yes, it is indeed not linear since Blender 2.93 to better correspond to perceived values. Probably an artistic choice. $\endgroup$ Mar 23 at 22:10
  • $\begingroup$ I assume the numeric values are the non-linear ones? is there a way to show (or do you know the formula to recalculate) the linear values? $\endgroup$
    – Timmethy
    Mar 23 at 22:18
  • $\begingroup$ Hey :). The numeric values are still the same, only the appearance of the grey slider is shifted somewhat to better represent lower values :) $\endgroup$ Mar 23 at 23:43
  • $\begingroup$ I understand that, but by how much is it shifted? $\endgroup$
    – Timmethy
    Mar 23 at 23:47
  • $\begingroup$ Maybe I don't fully understand it, do you mean the white dot is at 50% gray but 50% gray is off center in that slider? $\endgroup$
    – Timmethy
    Mar 23 at 23:51

2 Answers 2


This was changed starting in v2.92.0, “Color Management: use scene linear HSV for number buttons in color pickers. Previously these HSV values were in the color picking space, which meant the relation to the scene linear RGB values was confusing.

For more details see this bug report, and this topic on BlenderArtists.

  • 1
    $\begingroup$ Thank you! So if I Understand this correctly, with the values I set a color in linear color space. This color is then adjusted according to the settings in color management. The adjusted color will be displayed in my viewport in rendered mode. The color picker (eyedropper + colorwheel) is therefore not in linear color space because the color I pick (from viewport with eyedropper) is not. This means if I want to know the value that is displayed in my render i have to take the value I set and calculate the color transformation. Please correct me if I missed something! $\endgroup$
    – Timmethy
    Mar 24 at 2:00
  • $\begingroup$ I think you understand it better than I do. Far better than I do, I'm still kinda baffled. $\endgroup$
    – KickAir8p
    Mar 24 at 2:26
  • 2
    $\begingroup$ @Timmethy Feel free to self-answer, or suggest an edit to another answer if you feel you can provide more information. :) $\endgroup$ Mar 24 at 5:55

As already mentioned in the comment on @KickAir8p's answer: I figured that the values set in the RGB and HSV interface are linear, whereas HEX and the color-wheel are gamma corrected thus not linear. I assume the color-wheel is gamma corrected since it is used to pick colors from your viewport (in rendered view). The colors in the viewport are color corrected according to your color management settings. If the display device is set to sRGB which is a nonlinear color-space, and you pick a color with the eyedropper you basically select a non linear color, so it is also handled as such.

To apply gamma correction to a linear value this formula is used:

$V_{new} = V^{(1/gamma)}$ # Gamma is 2.2 for sRGB (To reverse just invert the power to $V = V_{new}^{2.2}$


$0.5^{(1/2.2)}$ ~ $0.73$

This is exactly the position of the white dot when the value is set to 0.5

One might assume that if the color-management settings are adjusted to not do any transformation, the two scales would both behave linear but that is not the case (I don't know why).

Here's resources I came across when doing research on this:





Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.