Fixing a purple/green colour effect during gamma adjustments using the Nvidia driver on Linux, and enabling the RGB colour space and full colour range
I had a peculiar problem where the colours on my Television looked washed out when connected to my Nvidia GTX 960. I’m using the proprietary drivers, and tried a few different driver versions to see if that helped, but in the end that didn’t seem to be the problem.
I tried using the colour correction sliders for the display in the Nvidia X Server Settings application, and realised that any changes resulted in either a green tint (when reducing brightness/gamma) or a purple tint (when increasing).
When I changed the refresh rate down to 30 Hz I saw that the problem disappeared, oddly enough. This lead me to take a closer look at the refresh rate I was using previously. Xfce reported the refresh rate as 60 Hz, but the Nvidia application showed an odd frequency of around 59.96 Hz.
I changed the frequency to Auto, and confirmed that frequency was reported as a perfect 60 Hz. This was the solution – any changes to the gamma, brightness and contrast now reflected accurate colours. I’m not sure why the display was running at such an odd refresh rate to begin with (after plugging it into multiple different ports even), but it seems that a minor offset can cause incorrect colours to display.
This also had the side-effect of enabling (I say enabling – the controls were all enabled, but had no effect when changing them) all the options under the “Controls” tab, including digital vibrance. I originally also noticed that the colour space was reported as YCbCr444, and the colour range as “Limited”. This has also been fixed, the colour space is now RGB and the range is set to “Full”.