Intro:

I'm honestly shocked how much temporal dithering truly is responsible for the vision and fatigue issues I've had with technology for YEARS, and just how much obviously better I can read, see, and just basically function and feel like I actually have energy in general the moment I figured out how to eliminate temporal dithering from the screens I spend the most time on.

When temporal dithering is truly eliminated it feels like some of my reading and concentration issues just "immediately vanish as if they never existed". It feels like magic. Dithering is so obvious to me, the screen is constantly twitching and shimmering colors in the corner of my eye, and feels like trying to read something that never becomes a fully solid object. I can't wrap my head around how most people don't notice this or want it to stop so their screen can feel as still as printed text.

I am about as Gen Z as you can get by the way, so this is not just an "old person thing".

Putting this out here so y'all can know that you are not alone.

Anyway, as macOS is one of the worst offenders in regards to temporal dithering — with it being baked into the OS and being essentially impossible to fully disable — I wanted to find a way to truly use macOS dither-free.

Previously, I've had luck in turning a Retina MacBook Air into a comfortable Windows laptop, which is great for design work as the screen is still very color accurate even with color management disabled.

(Edit: Compared to the 2012 Windows laptop setup detailed in this post, the 2018 MacBook Air is TRASH, LOL, the Air still has some strain even running Windows. But my actual old Windows laptop is close to perfect.)

However, as a developer I often need to rely on Mac apps. I was wondering if it could be possible to set up another device for coding and other text work that both allows me to use macOS and feels even more comfortable than my Windows 10 Air.

I've done it! I decided to set up an old Windows 8 laptop as a remote desktop client for my Intel MacBook Pro. I am using the free NoMachine app. After a week of use for many hours a day, I can safely say that this has enabled me to use macOS apps with zero eye strain.

On remote desktop compression artifacts: at least regarding this setup, they do not bother me at all. Any artifacts remain able to become entirely still while reading and not actively interacting, provided the client is dither-free and everything is set up correctly. I've also just learned to deal with the lag and random frame rate drops lol, owning an e-ink tablet definitely helped my brain get used to that 🙂

I will now post my exact working setup. I'm listing everything for completeness' sake, but I am including the ◆◆ symbol on the lines that are essential to reproduce my working setup.

CLIENT (Windows)

PC specs:

[General]

◆◆ Lenovo IdeaPad Yoga 13 (2012, Model: Mocca 2.0)

BIOS: 66CN51WW

Processor: Intel Core i7-3537U (Ivy Bridge) @ 2.00Ghz (2.50Ghz)

Memory: 8 GB

Storage: 256GB

Display: 1600x900 IPS (6-bit), Touch

◆◆ Graphics: Intel HD Graphics 4000

◆◆ Screen protector: NONE

This is actually important! There was an ancient screen protector on mine and the laptop became SO much more comfortable to look at after taking it off, even after disabling temporal dithering had already increased comfort by a ton already.

[OS details]

◆◆ OS: Windows 8.1 Pro (Build 9600), clean install done in 2019

Most recent updates: KB3000850 (11/21/2014) and 2019-11 Quality Rollup KB4525252 (12/2/2019)

General drivers: Default drivers installed from the Lenovo website in 2019

◆◆ Intel graphics driver: 10.18.10.4276 (8/27/2015)

[Windows settings]

◆◆ Backlight: 100%

◆◆ Use Windows display calibration: OFF

Mouse pointer shadow: disabled (possibly important as the cursor is GPU accelerated?)

Cursor blinking: disabled

Keyboard remap: Win and Alt key swapped with SharpKeys (for correct Cmd key location when connected to the Mac)

◆◆ ditherig.exe: Ver 2.1, Disable all dithering functions (IMPORTANT!)

What's amazing and VERY interesting about this Windows laptop is it seems that although the display appears to be 6-bit and uses "FRC" to achieve 8-bit color by default, this FRC is actually "simulated" entirely through the GPU instead of being baked into the display controller.

So when dithering is disabled via ditherig.exe, this doesn't just disable dithering of GPU-accelerated gradients and color adjustments, it also fully reveals the true 6-bit form of the display.

Very noticeable banding appears and the pixels become ENTIRELY stable.

Windows NoMachine client settings:

[Input]

Always show remote cursor pointer: ON (The "cursor trail" effect this creates is actually very relaxing to me)

^ EDIT 10/6/2024: I actually prefer remote cursor off now, since if you leave it on causes the remote cursor to "move around" nearby compression artifacts. However, sometimes NoMachine is finicky and the remote cursor annoyingly stays on (usually restarting the Mac's NoMachine server or the Mac itself can fix this)

[Display]

◆ Quality: 4th out of 9 notches

◆ Resolution: 1600x900 non-retina (set via BetterDisplay dummy)

[Advanced Display]

Disable network-adaptive display quality: ON

◆ Disable multi-pass display encoding: ON

◆ Disable frame buffering on decoding: ON

◆ Disable client side image post-processing: ON

◆ Disable client side hardware decoding: ON

◆ Request a specific frame rate: 30FPS

[Connection Info]

◆ Player version (Windows client): 8.4.2

◆ Server version (Mac server): 8.11.3

◆ Display: 1600x900, 30 FPS

◆ Encoding: SW encoding

Audio: Opus 11kHz mono

SERVER (Mac)

Mac specs:

[General]

MacBook Pro (15-inch, Retina, Mid 2015)

◆◆ OS: Version 12.6.8

Processor: 2.8 GHz Quad-Core Intel Core i7

Storage: 1TB

Memory: 16 GB 1600 MHz DDR3

◆◆ Graphics: Intel Iris Pro 1536 MB (this is an AMD model, but Intel is forced with gfxCardStatus)

[Mac settings]

◆◆ Internal display color profile: NULL ICC Profile (this may be important?)

◆◆ Color depth: 8-bit

When forced to Intel, this is actually the only option in the menu. However, a 10-bit option also appears in AMD mode.

Boot flags: nvram boot-args="dither=0"

This DOES disable Intel gamma table temporal dithering, but doesn't turn off the extra OS-level dithering used by macOS (yes, this is a real thing), so the actual 2015 MBP display looks slightly better but still has noticeable shimmering, glowing, and twitching text, meaning the Mac display is still hard to read.

However, remote desktop data is sent before ANY dithering step is applied, so attempting to disable dithering on the Mac probably doesn't matter anyway.

The type of hardware video encoding and compression algorithm is what matters most for remote connection, so forcing Intel is most important as AMD mode will use a different video encoding method.

Cursor blinking: disabled (Heads up, this seems to be no longer possible on macOS Sonoma.)

defaults write -g NSTextInsertionPointBlinkPeriodOn -float 1000000

defaults write -g NSTextInsertionPointBlinkPeriodOff -float 1

[Apps]

Chrome: 121.0.6167.184 (HW acceleration enabled, sRGB color profile forced in chrome://flags)

VS Code: 1.85.2, Electron 25.9.7 (HW acceleration disabled)

IntelliJ: 2023.2.1, Build 232.9559.62

EDIT 10/6/2024: I am now successfully using Chrome 124.0.6367.218 (running on the Mac server)

◆◆ NoMachine: 8.11.3

[NoMachine server settings]

◆◆ Performance: UNCHECK "use acceleration for display processing" (important!) Also disable "use hardware encoding".

[BetterDisplay settings]

Version: 1.4.15 Build 15141

Internal display: LID OPEN (backlight at zero)

◆◆ Primary display: 16:9 BetterDisplay dummy, 1600x900, mirrored to internal display

Color LCD: software-based video adjustments ON, color table manipulation OFF

Dummy color profile: sRGB IEC61966-2.1 (this seems to not affect anything on Intel, trying to change it resets back to sRGB)

What about using an M1 Mac (Apple Silicon) as the host?

YMMV. Apple Silicon Macs use different hardware video encoding and I couldn't configure an M1 Mac to stream the same way my Intel does. NoMachine offers "H.264" and "VP8" modes for compression on an M1 server, but I wasn't able to get "VT" encoding to show up in connection info like I can with the Intel.

H.264 is very fast, but something about it looks very off to me in a way I can't really place. VP8 feels much more relaxing to look at, but causes lag and compression artifacts can get pretty thick sometimes.

In addition, selecting the "software encoding" option instead (which I don't use anyway) seems to not be functional on M1, since connecting will still show "hardware encoding, H.264" in connection info.

EDIT 10/6/2024: I have now been using this sucesfully with an M1 Air server for a few months. Interestingly, the M1 Air can activate "software encoding" fine which makes it usable now, but the M1 Max MBP I used to have was stuck in hardware encoding mode. Possibly this is fixed for the MBP with newer NoMachine Server versions but I'm unsure.

🐚

    2016 Macbook Pro 15 whit Intel HD 530 does not dither at all even whit latest Monterey updates. It is still a very usable machine give it a try if you can.

    I am very sensitive to dithering too, tried so many macs especially the Intel Iris ones are the worst, only usable one for many hours daily is this one.

      DisplaysShouldNotBeTVs How can you know that ditherig.exe is safe to be used in your local machine? I mean even linux mint download ISO's were hacked at some point, you can never be sure what this developer got hidden there.

      Also regarding remote machine this is an option, but probably need to use Ethernet UTP cables for this, otherwise it all talks through WIFI, not very efficient. Also, I think the productivity overhead is just too high, not to mention people who need to grab their laptop and work from mobile location on some occasions.

        Donux I mean the source code is on GitHub you can compile it yourself if you wanna be safe safe

        Donux ditherig is open source lol just read the code yourself, all it does is change intel graphics registers and it's been a staple in this community for years as it can noticeably improve screen output

        NoMachine uses their own "NX protocol", way faster than VNC and works fast for me over wi-fi, so I don't need ethernet. I've also used it remotely a couple times before and it also works pretty well. It also automatically reconnects after sleep mode so you can just leave it open and it rarely ever disconnects.

        (And if you're ever doing anything that doesn't rely on the power or the apps of the Mac, you can always use Windows locally when needed, despite being an old laptop it's still fast enough for writing documents and most web browsing.)

        NoMachine even supports optionally enabling shared USB devices and printers over the connection, no idea how fast, but the fact it even offers it is great.

        In the end for me eye comfort matters and not flawless performance, since my day to day work is mostly just reading and writing documents, emails, and code it's more than fast enough for that to be very usable for me. Even panning around files like photos and designs runs at a pretty good frame rate and doesn't have much input lag.

        If the setup is making it actually possible to work since it's easy to look at the screen, that's better than any faster setup where I can't even comfortably use the screen or concentrate on my work anyway

        osxcool22 Yeah, unfortunately the 2015 15" (which I have instead of the 2016) has an Iris Pro, not an HD, so it dithers.

        Color profile dithering on the 2015 can be disabled with dither=0, but not the OS level alpha blending, gradient, and shadow dithering.

        Installing Windows on the MacBook Pro is also not an option on my 2015, since it's an AMD model and tries to force AMD mode in Windows.

        I tried the EFI workarounds to get it to load Intel instead when booting into Windows, but since this AMD Mac model was never designed for that, it caused the fans to run really loud and prevented the laptop from waking back up after entering sleep.

          DisplaysShouldNotBeTVs Yeah, unfortunately the 2015 15" (which I have instead of the 2016) has an Iris Pro, not an HD, so it dithers.

          Are you confident of this? I was following NewDwarf’s instructions here for disabling dithering on Intel and AMD cards on macOS on my 2015 15” Macbook Pros, but the commands never reported any dithering state. Others here suggested this means dithering is not available (in the fully enabled sense, at least) on these machines.

          osxcool22 because i have a great setup right now that i'm super productive on. i've also already done said "work" and this setup is reliable for me 🙂

          2016+ also has P3 color and that both can lead to screen issues and also interferes with my workflow since my design work is mostly in sRGB

          i also used to have a 2016 13" (with Iris, but somehow the screen was actually "decent" for general use, still definitely had comfort issues with some content though especially coding and schoolwork)

          but that 2016 13" had tons of keyboard reliability issues, i had to get keyboard replaced 3 times over its lifespan, and i wouldn't want to buy a Mac from that same generation again

          also i'd need to disable the OLED touchbar on 2016+ (because of intense PWM) which is pretty rough, the touchbar is hard to use anyway and i want Fn keys

          even back when i had the 2016 13", before i knew about PWM, i had a mostly blacked out touchbar with only two buttons on it, honestly probably because i didn't like looking at it LOL

          if i was changing my mac in any way i'd probably downgrade to a 2014 15" with NVIDIA instead, since i've heard good things about NVIDIA on Macs (vs AMD) here

          if anyone here has a NVIDIA Retina MacBook Pro, do you have any screen comfort issues?

          3 months later

          I am still using this 2012 Lenovo Yoga 13 + NoMachine screen sharing into a macOS device as my daily setup!

          • It is the only computer screen up to this day that truly "crosses the threshold" for me. I feel like I am "suddenly way smarter than I thought I was" working on it in way nothing else has truly achieved for me yet.

          • For example, even if I'm feeling pretty tired, many times I open this laptop and immediately feel energetic instead of feeling more tired. Really the only other devices I can think of that have a "positive" effect like this are the Kindle Oasis and original (2004) Nintendo DS. (also Boox Tab Ultra sometimes but only in very ideal lighting conditions like outdoors). It's incredible that this is a LED-backlit IPS panel !!

          • ditherig.exe is needed. Reduces display to 6bit and becomes very stable. Very noticeable difference.

          • Windows 8.1 6.3.9600(.18969 hardware abstraction layer) Build 9600

          • BIOS 66CN51WW 10/19/2012 2.7

          • LG IPS LGD0360 panel (1600x900)
            Intel graphics driver 10.18.10.4276 8/27/2015 WDDM 1.3
            Intel DPST off (FeatureTestControl value 0x0000f010)

          • It does have some form of PWM, even at 100% brightness. Can detect on dark gray with 240hz slow motion. Something "different" about it though, "scans from top to bottom" instead of whole screen. Only mild flicker depth. 100% brightness is best. Despite this "issue", strangely enough, reading comprehension, depth perception, ability to think to myself while looking at the screen, ability to instantly understand extremely information dense user interfaces etc. are NOT impacted. Usually I'm very sensitive to other types of PWM - so the fact I'm fine with this is very unique. Some dryness in left eye after using for a while but unlike everything else, my level of productivity is not affected.

          • It would probably be "even better" without PWM but it remains the one display that truly works for me. I can work on it for the entire day without my eyes getting tired.

          18 days later

          Checking in again, this same Lenovo IdeaPad Yoga 13 1st Gen + Windows 8.1 + screen sharing setup is still awesome for me.

          The "server" device has also been migrated to an M1 Air instead of an Intel MBP to run some more demanding macOS apps and things are still going smoothly.

          There's really only one main catch to be aware of for the screen - (lining up exactly with what many others here have said about many Lenovo laptops!), the screen is the most comfortable when running on battery and not plugged in. That's when it achieves pretty much zero strain.

          However, if it's plugged in, I notice some slight strain and unusual flicker. This isn't a new issue, I'm just deciding to point it out now. Likely theory is that there is interference from AC power that somehow reaches the LCD. Even in this case though it's still many times better than any (even older) Mac laptop, but the way you achieve maximum "stillness" is to run it on battery.

          Sometimes (at least to my eyes) it seems that after returning to battery you need to toggle ditherig.exe to Spatial and then back to Disable in order to fully get back the stillness.

          As I've previously mentioned, mild (i.e. "low flicker depth") PWM on dark grays is still detectable on the Lenovo at all brightness levels in both power states. However, even though I can't stand most PWM or flickering lightbulbs for instance, whatever type of mild PWM is used here somehow remains totally fine for me. No issues as long as I'm on battery.

          100% brightness also remains the best (even though PWM can still be detected), this might just be since the screen has low nits so running it at max is pretty much necessary anyway.

          Again, simply using this laptop literally makes me feel a hundred times smarter than I thought I was. It's incredible. It really makes me think how many people's cognitive / learning ability could be entirely transformed if they just had a healthier screen in front of them.

          3 months later

          DisplaysShouldNotBeTVs what is the point of leaving hardware encoding ON? Any details about this property?

          Also, I tried the NoMachine setup with several bad laptops streaming to the safe, one and didn't have any effects

            Ivan_P No idea, I actually don't remember writing that 😆 I use everything with hardware decoding off nowadays and it's working great. Will edit the original post to say off instead.

            By the way, the 2012 IdeaPad Yoga 13 is still the ONLY laptop that has a "perfect" screen to me — 11 years after buying it and 6 months into "rediscovering" it.

            Literally no other laptop LCD I've used feels like this one does. It works for me consistently every day and it makes me feel like I can simultaneously see every single item on the screen at the same time.

            I'm still surprised that this screen is IPS and WLED backlit, yet is able to work so well. In fact, I own CCFL TN monitors from 2005 and 2007 that still strain me (even if connected to an old GPU that provides a 6-bit signal) — but this laptop screen doesn't!!

            (What's interesting about this laptop is how rare the screen is. "1600x900 IPS" turns up very few results on Panelook. When limiting to laptop screen sizes, literally the only results are a few variations of this exact LG panel and a single PLS panel by Samsung. There are many 1600x900 TN panels, but a 1600x900 IPS is mythical.)

              DisplaysShouldNotBeTVs I also have an old laptop that I can use with no problem. It's Dell Latitude from 2018.

              It's interesting what exactly NoMachine doses. As I'll get a black magic capture card, I'll investigate it.

              But it seems something besides the dithering on modern laptops and OSs 😃

                Ivan_P Which exact Latitude model is it and which Windows version/build number are you running? Also, if you can run the HWiNFO64 app, is there a LCD panel ID that shows up under "Monitor" section?

                For example, on one of my laptops, the panel ID shows up under Monitor -> [click on the generic name of the display] -> and then look at "Monitor Name (Manuf)" within that section

                  DisplaysShouldNotBeTVs

                  1. Dell Latitude 5590 LGD053F running on Ubuntu 20 (X11)
                  2. Dell Latitude 5521 LGD06CF with Windows 10 Enterprise. Build 19045

                  This two laptops I used before eyestrain occured. And they are fine now. All other laptops same models that I tried after discovering the eyestrain issue are unusable to me

                  dev