Light green suddenly displays as white

Today, when I ran a small program of mine which uses X11, the light green color #E0FFE0 suddenly displays as white. The color #00C000 still displayes as green. Yesterday, #E0FFE0 did display as light green.

When I open www.google.com in Firefox, the search field is no longer surrounded by a ligth grey frame and my text editor (nedit) has become less readable, so it could be that other windows/colors are also affected. The present discussion.fedoraproject.org site seems to display fine.

I use Fedora/Xfce.

Are anybody aware of recent changes?

Able to reproduce this issue on X11 (Fedora with NVIDIA). This includes games and pretty much any localization of the color variant with this same color code: #E0FFE0

As a follow up, here is a reproduction scenario.

#include <X11/Xlib.h>

#define XWIN_W          400      // Width of window
#define XWIN_H          200      // Height of window

#define BLACK           0x000000
#define WHITE           0xFFFFFF
#define GREEN1          0xE0FFE0
#define GREEN2          0xC0FFC0
#define GREEN3          0x00FF00

int main(int argc,char **argv){
  Display *display=XOpenDisplay(NULL);
  if(display==NULL) return 1;
  int screen=DefaultScreen(display);
  Window root=RootWindow(display,screen);
  GC gc=XCreateGC(display,root,0,NULL);
  Window window=XCreateSimpleWindow(
      display,root,10,10,XWIN_W,XWIN_H,1,BLACK,WHITE);
  XSelectInput(display,window,ExposureMask|KeyPressMask|ButtonPressMask);
  XStoreName(display,window,"Light Green");
  XMapWindow(display,window);
  for(;;){
    XEvent event;
    XNextEvent(display,&event);
    switch(event.type){
      case Expose:
        XSetForeground(display,gc,WHITE);
        XFillRectangle(display,window,gc,0,0,XWIN_W,XWIN_H);
        XSetForeground(display,gc,BLACK);
        XFillRectangle(display,window,gc, 20,20,20,40);
        XSetForeground(display,gc,WHITE);
        XFillRectangle(display,window,gc, 40,20,20,40);
        XSetForeground(display,gc,GREEN1);
        XFillRectangle(display,window,gc, 60,20,20,40);
        XSetForeground(display,gc,GREEN2);
        XFillRectangle(display,window,gc, 80,20,20,40);
        XSetForeground(display,gc,GREEN3);
        XFillRectangle(display,window,gc,100,20,20,40);
        break;
      case ButtonPress:return 0;
      case KeyPress:return 0;}}
  return 1;}

Compile with

gcc -o xwin xwin.c -lX11

Run thus

./xwin

To exit: hit any key or click the window

Expected result: Five rectangles showing black, white and three shades of green

Actual result: Five rectangles showing black, white, white, and two shades of green (see screenshot below)

LightGreen

Might it be a colorspace issue? If so you might want to fiddle with your ICC profile in colord and see if that makes any difference.

In both your screenshot and this one I took myself, I can see black, white, green, green, green
Screenshot from 2024-04-19 20-31-54

(gnome 46, wayland, amdgpu)

Hi @rootbeer, Thanks for reproducing the issue. It is nice know that this affects more than one installation. At the same time it is puzzling that it does not affect all installations (cf @shorberg)

Hi @shorberg, It is a very useful piece of information that you can see three green colors not only in yours but also in my screenshot. That rules out a lot of possible causes. So thanks for the tip.

If I reboot my PC into Windows, I still only see two green colors.

When I boot an Asus laptop in Windows, I can see three.

If I replace my Aoris UHD monitor with an old Asus VHD monitor on my PC and boot into Linux, I can see three green colors.

So the problem is independent of XFCE4. It is even independent of Linux. But it is somehow related to the monitor. And since the problem started overnight, it must be a software problem.

So your suggestion that the problem is somehow related to colord seems reasonable.

Unfortunately, I have difficulties fiddling with colord under XFCE4. If I go to MenuBar->Applications->Settings->ColorProfiles I get the app window shown in the screenshot below. I can only select my printer, not the monitor. If I do colormgr get-devices I get

Object Path:   /org/freedesktop/ColorManager/devices/cups_HP_ENVY_Photo_6200_series_2AB039
Owner:         root
Created:       April 20 2024, 02:26:42 PM
Modified:      April 20 2024, 02:26:42 PM
Type:          printer
Enabled:       Yes
Embedded:      No
Model:         HP ENVY Photo 6200 series
Vendor:        Hewlett Packard
Serial:        dnssd://HP%20ENVY%20Photo%206200%20series%20%5B2AB039%5D._ipp._tcp.local/?uuid=36f51bff-f449-5ea9-999b-696e431dbcfb
Format:        ColorModel.MediaType.Resolution
Scope:         temp
Colorspace:    unknown
Device ID:     cups-HP_ENVY_Photo_6200_series_2AB039
Profile 1:     HP_ENVY_Photo_6200_series_2AB039-DeviceN..
Profile 2:     HP_ENVY_Photo_6200_series_2AB039-Gray..
Metadata:      OwnerCmdline=/usr/sbin/cupsd -l

Again, I can select the printer, not the monitor.

So it seems that colord does not know about the monitor. When I replace the monitor, colord still does not know about the monitor. So maybe it is some defaults which have changed?

From colormgr --help I can see that colormgr create-device [ID] [SCOPE] [KIND] might do something useful. But I cannot find any documentation of that on the World Wide Web.

By the way, I use Linux/Fedora/XFCE4/Nouveau

This is very interesting, if you shutdown the computer (and monitor) completely and then boot directly into windows is the problem still there? For instance by unplugging the power and waiting 10 sec.

Yes. Still there. I even unplugged for more than 60 seconds.

Then the only thing I can think of is to factory reset the monitor and hope that does something, aside from that we have unfortunately reached the end of my expertise.

Thanks anyways.

Actually (something like) resetting the monitor was the solution. In the menu system of the monitor, one can set “Picture” to one of “Custom 1”, “Custom 2”, “Custom 3” and “Green” where “Green” probably means “slightly less harmful to the climate”. Changing from “Green” to any one of the others made the light green shade change back from white to light green and made the whole picture brighter. So setting Picture=Green probably caps the intensity which could explain why the lightest shades become identical to white. While that is rather particular to my Aorus UHD monitor, I hope this can give a hint to others with similar problems.

Happy to hear you found a solution!

I will certainly remember this for the future.