External display colours look washed out

Two different complaints get the same answer. “The picture looks flat after I dim it” and “I adjusted the colour and now it looks worse than before” are both about the gamma table — and the second one is a mistake that is genuinely easy to make, in our own code as much as anyone's.

Why dimming changes colour

When a panel does not implement DDC/CI, brightness has to be done in software, by rewriting the display's gamma ramp. That is a real change to the relationship between signal and output, so a dimmed image is not simply a darker version of the same picture — it can read as flatter or greyer. This is inherent to software dimming, not a bug in any particular app.

The trap: adjusting on top of your own adjustment

Here is where things go wrong. The natural way to write “set gamma to 2.3” is to read the current table, shape it, and write it back. Do that once and it is fine. Do it again — and the second adjustment is applied on top of the first — and the third on top of that. Every tweak compounds the last one, which is why people describe colours that “drift” and never quite come back.

The fix is one line of discipline: capture the curve once, and always compute from that captured copy, never from the curve you last wrote. In our source the comment on that cache says it plainly: “The display's pristine ramp, captured once and reused as the base for every transformation so repeated adjustments never compound.” The hundredth adjustment produces the same result as the first.

The honest detail about that baseline

“Captured once” means exactly that: we read the display's transfer table the first time we take control of it, and use that as the base. On a Mac where nothing else is manipulating gamma, that is the panel's original ramp. If another gamma-controlling app is already running when we start, then what we captured is that app's curve, and our adjustments are computed relative to it. That is why the wording matters, and why we say it here rather than letting the shorter marketing phrase imply more.

Getting back to where you started

One command drops everything we applied and hands the display back to the system: it writes the captured curve back and forgets our state, so ColorSync is in charge again. In the app this is a button, and the panel reports “handed back to the system ColorSync calibration”.

What this is not

It is a perceptual adjustment, not a measurement-grade calibration. If your work depends on measured colour, no gamma-table tool — ours included — replaces a colorimeter and a profiled display. Our licence terms say the same thing in plain words rather than hiding it.

Related

Brightness resets after sleep · DDC/CI not responding · Which Mac display app should you use?

Text looks blurry? Check which mode you are in