Look at these harmonious colors, they come from Google Material Design. I'm wondering how did Google designers create them? Expert knows that dark yellow will turn into lemon (with little green in it), but following palette doesn't have this problem. Is there any algorithm to fix to keep yellow yellow? Shifting hue of the color by color luminance? Any ideas?

enter image description here


  1. I think this is very helpful. Thanks @Rafael.
  2. Thanks @joojaa for all his / her comments in this post. It make me realized that maybe RGB / HSL is not the right color space to use, maybe I should try Lab or LCH color space.
  • "Everyone knows that dark yellow will turn into lemon" No, i dont know this, and i seem to know a thing or two of color. And in fact there is no inherent reason why it has to do so... Care to elborate, why you assume this. – joojaa Jan 17 '19 at 9:54
  • Take a look at this: graphicdesign.stackexchange.com/questions/58735/… – Rafael Jan 17 '19 at 18:22

Using Adobe Illustrator, it's an easy matter to use blends to generate middle stages and color strips.

You first have to define a list of base colors. The colors you want as primary tones. Then start with a base color. Set the lightest variation of that base, and the darkest variation of that base.

enter image description here

Then blend between the 3 steps...

enter image description here

As for why "yellow doesn't turn green".. it's because red is added to darken the yellow, rather than black. This pushes the dark side of the blend into the orange spectrum rather than green... same blend though...

enter image description here

|improve this answer|||||
  • Thanks, you make this question more clear. Please take a look at your yellow blend, see? the dark yellows are truly not yellow, it's yellow lemon with green. But in my question, you could see that even the yellow turns dark, but it still yellow. What I curious is how they did it? What's the precise algorithm to shift the hue from yellow to orange. :-) – iheshi Jan 17 '19 at 8:51
  • 2
    They simply blended yellow to orange. There's nothing mystical about it. – Scott Jan 17 '19 at 9:01
  • Thanks Scott! Let's wait to see if there's any magic behind the sense. :-D – iheshi Jan 17 '19 at 9:11

If we make a gradient in Photoshop from maximally colorful and bright yellow RGB=255,255,0 to a darker version, say 128,128,0 it really can be seen as greenish at the dark end. It's shown in the uppermost stripe of the next image:

enter image description here

This is a property of our sight and how RGB screen excites it. Green starts to be obvious in the halfway of the gradient.

The mid stripe is the same as the first one, but got -7 degrees hue shift (=towards red) Bright yellow turns to a little orange but there's less green.

The third stripe has still 255,255,0 at the start, but the end is color 128,128,0 with -7 degrees hue shift. There's clearly less apparent green than in the first gradient, which proves your theory. Wider hue shift than -7 degrees can be used for more orange ending.

7 degrees here or there can unfortunately be also caused by the differences between computer screens. Another source for hue shifts is the numerous conversions between the production and the final display.

A guess: for this reason Google hasn't even tried to only compensate the apparent green, but made it clearly orange.

|improve this answer|||||
  • Thanks bro, and I'm still wondering if there's any precise algorithm to do the hue shifting, not just simplely put a -7. – iheshi Jan 18 '19 at 2:19
  • @iheshi nothing says that interpolating in RGB is correct! In fact from a physical point of view we can say that it is not defined this way, but if it would be then RGB would definitely be incorrect. IT is much much better to interpolate in a HCL (or if you must HSB or HSV) space than in RGB directly. Even just interpolating in XYZ and Lab actually make more sense than interpolating in something as lopsided as RGB. Since RGB is not linear your interpolation does make little sense, Although if you are allowed to draw the interpolation curves it makes more sense. – joojaa Jan 18 '19 at 7:40
  • @joojaa Of course I'm using HSL and XYZ. No one here talks about RGB. :-) – iheshi Jan 19 '19 at 1:26
  • @iheshi HSL has same problem as RGB. Try interpolating in HCL but dont use quick and dirty wikipedia formulations but really use a CMS for the transformation. In any case interpolation just simply is not defined in color spaces. A line has little meaning just like Rafael says. – joojaa Jan 19 '19 at 14:33
  • @joojaa Thank you very much. I will have a try. – iheshi Jan 22 '19 at 2:02

Your Answer

