Display Dithering on Mac: The Hidden Flicker Source Your Blue Light App Won't Fix
You locked your brightness at 100% to stop PWM flicker. The headaches got better. They did not stop. There is a shimmering noise across your screen, especially in the evening when your blue light filter pushes the display into deep warm tones. It looks like sand crawling across a glass surface. You are not imagining it.
This is temporal dithering. It is a second, entirely independent source of display flicker that operates at the GPU level on every Apple Silicon Mac. It has nothing to do with the backlight. It has nothing to do with brightness. And no blue light filter app addresses it — because most of them do not know it exists.
What Temporal Dithering Actually Is
Your MacBook's display panel has a fixed number of distinct color values it can physically reproduce per pixel. An 8-bit panel can display 256 shades per channel (red, green, blue), totaling roughly 16.7 million colors. A 10-bit panel reaches 1,024 shades per channel, or about 1.07 billion colors.
macOS frequently needs to display colors that fall between these discrete values. A gradient from dark blue to slightly lighter blue might require a shade that is 0.4 of the way between value 127 and value 128. The panel cannot produce 127.4. It can produce 127 or 128. Nothing in between.
Temporal dithering is how the GPU fakes the missing value. It alternates the pixel between 127 and 128 on consecutive frames. At 60 Hz, the pixel switches value 60 times per second. At 120 Hz with ProMotion, it switches 120 times per second. Your eye averages the rapid alternation and perceives the intermediate shade. The gradient looks smooth.
The cost is that every dithered pixel is flickering. Not the backlight. Not a block of the screen. Individual pixels, across the entire display surface, changing color values at your refresh rate, every frame, continuously.
Why Dithering Gets Worse With Blue Light Filters
Under standard display conditions, temporal dithering is subtle. The color differences between adjacent values are small (one step out of 256 or 1,024), and the alternation is fast enough that most people never notice it.
Blue light filters change this equation dramatically.
When you apply a deep warm color temperature — say, 2000K or lower — your display needs to render a narrow range of red and orange tones while suppressing nearly all blue and most green output. The available color values in this restricted range are sparse. The GPU needs to dither more aggressively to simulate smooth gradients within a compressed palette.
At Sundown's deepest setting (500K), the display is producing almost pure red light. The number of distinct red values the panel can physically show is fixed at 256 (8-bit) or 1,024 (10-bit). But the number of perceived shades you need within that narrow band is much higher. The result is visible dithering: a crawling, sand-grain pattern across solid-colored areas of the screen.
This is why people who use aggressive blue light filters at night often complain about "screen noise" or "pixel shimmer" that they never see during the day. The filter is not causing the dithering. It is making pre-existing dithering visible by compressing the color range into a narrow band where the panel's resolution is insufficient.
Dithering Is Not PWM. They Are Independent.
This distinction matters because fixing one does not fix the other.
PWM flicker is a backlight behavior. The LED strips behind your display turn on and off at a fixed frequency to control brightness. It affects the entire display uniformly. The solution is to keep the backlight at constant maximum output and dim through software.
Temporal dithering is a GPU behavior. The display coprocessor (DCP) on Apple Silicon chips alternates individual pixel color values at the refresh rate to simulate color depth. It affects different pixels differently depending on what color they need to display. The solution is to disable the dithering algorithm in the GPU's framebuffer pipeline.
You can have both simultaneously. A MacBook Pro at 30% brightness with a 2000K blue light filter is experiencing: (1) backlight PWM at 14.8 kHz across the entire panel, and (2) per-pixel temporal dithering at 60 or 120 Hz wherever the GPU needs to approximate a color value. Two independent sources of visual instability, layered on top of each other.
For flicker-sensitive users, this is why locking brightness to 100% (eliminating PWM) helps but does not fully resolve symptoms. The dithering continues because it operates through a completely different mechanism.
Which Macs Are Affected
Every Mac with an Apple Silicon chip produces temporal dithering. The dithering implementation lives in the IOMobileFramebufferAP driver class, which is the Display Coprocessor interface for M1, M2, M3, and M4 chips.
Intel Macs use a different framebuffer driver and produce less aggressive dithering. The dithering is still present but uses a spatial pattern (distributing the error across neighboring pixels in a single frame) rather than a temporal pattern (alternating values across consecutive frames). Spatial dithering does not flicker because no pixel changes value between frames.
The shift from Intel to Apple Silicon made dithering worse for sensitive users. Apple's custom display coprocessor chooses temporal dithering because it produces smoother gradients than spatial dithering. This is technically correct. It is also technically flickering.
How to See Dithering on Your Mac
You can make temporal dithering visible without any tools.
Step 1: Enable any blue light filter and push it to its deepest warm setting. Night Shift at maximum. f.lux at 1200K. Sundown at 1000K or below.
Step 2: Open a window with a large area of solid color. A text editor with a white background works. At deep warm temperatures, this will appear as a solid amber or orange field.
Step 3: Look at the solid-colored area closely. If you see a subtle, crawling noise pattern — like static on an old television but much finer — that is temporal dithering. The individual pixels are alternating between adjacent color values at your refresh rate.
Step 4: For definitive confirmation, use your phone's slow-motion camera (240fps). Point it at the solid-colored area. In the slow-motion footage, you will see individual pixels flashing. This is the dithering happening at a rate your phone can capture but your conscious vision cannot quite resolve.
Not everyone can see it. Roughly 1 to 5 percent of Mac users notice temporal dithering under normal conditions. But under deep blue light filter settings, the percentage goes up significantly because the reduced color gamut makes the alternation more extreme.
How Sundown Disables Dithering
Sundown's anti-dithering feature works by communicating directly with the Apple Silicon display coprocessor through IOKit, Apple's hardware abstraction framework.
The IOMobileFramebufferAP driver class exposes a property called enableDither. When set to false, the display coprocessor stops applying temporal dithering to the framebuffer output. Pixels that would normally alternate between two values instead snap to the nearest available value and stay there.
The implementation iterates over every connected display's framebuffer service and sets the property on each one. The change takes effect immediately — no restart required, no logout, no display reconfiguration.
When you connect or disconnect an external display, macOS resets framebuffer properties to defaults. Sundown monitors display configuration changes and automatically reapplies the anti-dithering setting whenever a display is added or reconfigured. You toggle it once and forget about it.
This approach is based on the technique used by StillColor, a free MIT-licensed utility focused specifically on dithering. Sundown integrates the same IOKit mechanism alongside its blue light filtering and flicker-free mode, so you get all three protections from a single 398 KB app.
What You Lose When You Disable Dithering
Temporal dithering exists for a reason. It makes gradients smoother. Without it, you may notice subtle banding in color transitions — visible steps between adjacent color values rather than seamless blends.
In practice, the banding is only noticeable in specific conditions: large areas of gentle gradients (sunset photos, some video content) on an 8-bit panel. On 10-bit panels (MacBook Pro 14-inch and 16-inch), the 1,024 values per channel provide enough resolution that disabling dithering rarely produces visible banding.
For evening use with a blue light filter active — the scenario where dithering is most visible and most annoying — disabling it is almost always the right trade-off. You are replacing a flickering gradient with a slightly stepped gradient, and the stepping is imperceptible because the warm color filter has already compressed your visible color range.
During the day with no color filter applied, you may prefer to leave dithering enabled for maximum gradient smoothness. Sundown lets you toggle it independently of all other settings.
The Combined Solution: Flicker-Free + Anti-Dithering
The complete anti-flicker setup on a MacBook combines both mechanisms.
Flicker-free mode locks the backlight at maximum and dims through the gamma table. This eliminates PWM — the 14.8 kHz backlight strobe.
Anti-dithering mode disables temporal dithering in the GPU framebuffer. This eliminates per-pixel color alternation at the refresh rate.
With both enabled, your display produces zero flickering. The backlight runs at constant maximum output. Every pixel holds a stable, unchanging color value. The only motion on screen is the content you are actually looking at.
For users who have spent months or years dealing with unexplained screen headaches, this combination is often the first time their Mac does not hurt to look at. Not because the screen is dimmer or warmer or less blue. Because it has literally stopped flickering.
FAQ
Does disabling dithering affect color accuracy for professional work?
On a 10-bit panel (MacBook Pro), the impact is negligible. On an 8-bit panel (MacBook Air), you may see minor gradient banding in color-critical work. For professional color grading or print preparation, leave dithering enabled during active work and disable it for general use.
Does anti-dithering work on external displays?
The IOKit framebuffer property applies to all displays connected to the Mac, including external monitors driven by the Apple Silicon GPU. Displays connected through a Thunderbolt dock or USB-C hub are included. Displays with their own GPU (like some eGPU setups) are not affected.
Will a macOS update re-enable dithering?
Major macOS updates may reset framebuffer properties. Sundown monitors for these changes and reapplies the setting automatically. Minor updates and security patches typically do not affect it.
Can dithering cause migraines?
Temporal dithering operates at your display's refresh rate (60 or 120 Hz). For individuals with photosensitive migraine, research published in PMC shows that visual stimuli at these frequencies can trigger migraine episodes. The per-pixel nature of dithering means the stimulus is distributed across your entire visual field, which may compound the effect.
Is StillColor a good free alternative?
StillColor does exactly one thing and does it well: disable temporal dithering. If dithering is your only concern, it is an excellent free tool. If you also want PWM protection (flicker-free mode), blue light filtering, and automated scheduling, Sundown handles all three. See our complete flicker guide for the full comparison.
Your screen has two independent flicker sources. Most people only know about one. Sundown handles both. Start your 7-day free trial at trysundown.com.
Protect your screen tonight.
7-day free trial. 398 KB. Zero tracking. Zero CPU usage.
Start Free Trial