Yellow and gray blend with white on a remote monitor connected with a HDMI-VGA adapter

The problem is that yellow and gray are hardly visible on my remote monitor. For example when I open StackOverflow I cannot see the yellow background of quote blocks and the gray background of code blocks. They just blend with the white background.

How can I fix the way colors are displayed on the second monitor?

Details

  • The remote monitor is Samsung 2043NW and it has only an VGA port.
  • I've experienced this behavior on two different machines: Lenovo Yoga 3 14 and Dell XPS 17 L702X. They were connected using the same HDMI-VGA adapter.
  • Colors are OK when I connect the monitor to Lenovo ThinkPad X230 to its VGA port.
  • I've tried changing the color settings on both the monitor itself and with software tools like xbrightness, xgamma and so on. It didn't work although it looks like a problem with brightness or an invalid gamma calibration.
  • I've experienced this on both FreeBSD (10.3, 11) and Ubuntu (17.04).
  • I've already tried a few different adapters.

Solution 1:

tl;dr

xrandr --output HDMI-1 --set "Broadcast RGB" "Limited 16:235"

Detailed answer

The problem was with the X server. The idea came from this Arch Linux Wiki article about xrandr.

They suggest there to run:

xrandr --output HDMI-1 --set "Broadcast RGB" "Full"

in order to fix colors. It didn't work but I decided to see other options I can change with --set.

On Ubuntu 17.04 xrandr --prop returns:

HDMI-1 connected 1050x1680+1920+0 left (normal left inverted right x axis y axis) 459mm x 296mm
        [... some uninteresting properties ...]

        Broadcast RGB: Automatic
                supported: Automatic, Full, Limited 16:235

        [... some uninteresting properties ...]

It turns out that

xrandr --output HDMI-1 --set "Broadcast RGB" "Limited 16:235"

fixed the issue and now all the colors are distinguishable.