How Accurate Are the Windows Color Filters?
Nobody outside Microsoft can say. Windows 11's color filters for protanopia, deuteranopia and tritanopia are applied after the desktop image is composed — below the level any screenshot, screen recording or public API can observe. We tested three independent capture paths and all three returned the unfiltered image, byte for byte. Microsoft doesn't publish the transform, so its accuracy can't be checked from outside. That is not a claim the filters are bad. It's a claim that nobody can tell.
These filters are plausibly the most widely deployed color-vision assistive transform that exists — they ship on every Windows installation, switched on from Settings → Accessibility → Color filters. We went looking for their coefficients in order to compare them fairly against a published daltonization method. We couldn't find them, and that turned out to be the interesting part.
What we tested, and what came back
Three independent software paths, on Windows 11 Pro build 26200:
| Path | What uses it | Result |
|---|---|---|
| GDI / BitBlt | Ordinary screenshots, Print Screen, Snipping Tool | Blind. 0.0000 of pixels changed |
| DXGI Desktop Duplication | OBS, Teams and Zoom screen-share, remote desktop | Blind. 0.0000 of pixels changed |
MagGetFullscreenColorEffect | Microsoft's own documented API for reading a full-screen color effect | Returns identity while a filter is active |
Not "small differences." The captured frames were byte-identical while the screen was visibly changed to the person sitting in front of it. The obvious way to get a result like this by accident is to run an experiment that never changed anything, so the filter's state was read out of the registry at the moment of every capture and stamped into the file; the comparison tool refuses to draw any conclusion from two captures that share a state. An earlier run of ours was invalid for exactly that reason.
The part that affects you today
If you use Windows color filters, your screenshots do not show what you see. Neither does your screen share. When you send a colleague a screenshot to ask "can you tell these two lines apart?", they are looking at the uncorrected image — and so is the support agent, the bug tracker, and the person on the other end of the Teams call.
This catches people out constantly, and it isn't a bug in your setup. Night Light behaves the same way for the same reason. If you need to show someone what your screen actually looks like, photograph the monitor with a phone — that is currently the only way.
Why it works this way
The evidence points to the filter being applied in the display output pipeline — the desktop compositor's output stage or the graphics card's output color conversion — rather than to the composed desktop image that capture tools read. That's a sensible place to put it: it's fast, it costs nothing per application, and it genuinely does cover everything on the display, including games and video that other approaches miss. The side effects follow from the same design decision that makes it work well.
What this doesn't mean
Being careful here matters, because the honest finding is narrower than the interesting one:
- It doesn't mean the filters are ineffective. They may be excellent. We measured that they are unmeasurable by these means, which is a different statement.
- It doesn't mean no interface exists. Three public paths returned nothing. A private or undocumented one may well exist.
- It doesn't generalize past what we ran. One machine, one GPU vendor, one Windows build. A different setup could behave differently, and the test is cheap to repeat — the scripts are public.
- The screenshot behavior was already known informally. Accessibility guides have noted it for years. What's new here is the measurement, the extent, and the API result.
The one result we haven't found reported anywhere else is the third row of that table: Microsoft's own full-screen color-effect API returns an exact identity matrix while a color filter is running. That's the result that closes off the obvious workaround, and it's why no accessibility checker, testing harness or third-party benchmark can audit these filters.
What we'd rather have
Publishing the three matrices would cost Microsoft very little and would let anyone verify, improve on, or teach the transform. Until then the only remaining route to measuring them is a camera or a colorimeter pointed at the display, which is where this work goes next.
Everything above is reproducible. The method, the controls, the raw captures and the scripts are public and MIT licensed, including results that don't flatter our own correction — several of our candidate matrices were rejected by our own test.
If you're choosing what to use
Start with the built-in filters. They're free, they're already installed, they cover the whole display, and whether they help you is something you can judge in thirty seconds without anyone's benchmark. Reach for something else when you want a transform you can read, a strength control, or corrected colors that survive a screenshot.
Set up color correction — browser, whole screen, or your own site →Frequently asked questions
MagGetFullscreenColorEffect returns exact identity while a filter is active. Recovering it would need a camera or colorimeter measuring the display itself.The correction method compared against here is OpticQuiz's published, open-access work — read the paper & open source →