Skip to content

Eye care: prevent PWM and or temporal dithering

waydabber edited this page Feb 17, 2024 · 11 revisions

Two common issues with computer monitors that cause eye strain for people who are sensitive to high frequency flickering are the following:

  • PWM is a technique (Pulse Width Modulation) used in some displays to control brightness or achieve a dimming effect. It involves rapidly turning the screen's LED backlight (or for OLED screens, pixels) on and off at a specific high frequency, creating the illusion of different brightness levels.
  • Temporal dithering is a technique to produce more colors than what a display's panel (or display connection) can support (for example showing colors with 10 bit color depth - "billions of colors" - on an 8 bit - "millions of colors" - panel). When the display does not have the capability to show the full color depth, it will emulate missing colors by rapidly change between two adjacent color levels thus creating a middle ground.

BetterDisplay has some capabilities to help with these issues.

Note

The article reflects app version v2.2.3

Preventing PWM

In order to prevent PWM flicker, you first need to figure out the hardware brightness threshold below which PWM is activated. For most displays this is somewhere between the 30% and 50% range. You can use various techniques to figure out the exact treshold or you can simply assume 40% which should be safe for most displays.

In order to prevent the display to use hardware brightness levels below the PWM threshold and use BetterDisplay's software dimming instead (which does not trigger PWM), you should change the Combined brightness - minimum allowed hardware brightness level setting under the display's Advanced control settings section (make sure Combined brightness is enabled for the display).

This technique works both for built-in displays and external displays with hardware birghtness control.

Help with temporal dithering

Preventing temporal dithering on Intel Macs

Intel Macs allow you to switch between 8-bit and 10-bit color depth. In order to prevent temporal dithering for most displays, you simply need to switch to 8-bit color depth under the display's Color Depth submenu in the app menu.

Preventing temporal dithering on Apple Silicon Macs

Apple Silicon Macs automatically select the best available color depth for a display connection - this usually results in 10-bit color depth with no option to change this and thus prevent temporal dithering.

A workaround for this is to create a virtual screen using the app (which always uses a 8-bit color depth) and mirror it to your real screen (go to Settings > Displays > Create New Virtual Screen..., select Match aspect ratio..., select the display and toggle on Configure virtual screen mirroring, then click Create Virtual Screen). Based on user feedback this helps with temporal dithering issues.

Note

Using virtual screen mirroring to prevent temporal dithering is a workaround with some drawbacks. Virtual screen mirroring has some bugs (mouse cursor issues, color issues, sleep issues) in macOS when employed on Apple Silicon Macs.

Clone this wiki locally