CGSetDisplayTransferByTable is broken on macOS Tahoe 26.4 RC (and 26.3.1) with MacBook M5 Pro, Max and Neo

The CGSetDisplayTransferByTable() is not working on the latest round of Mac hardware, namely the MacBook Neo (external display), MacBook M5 Pro (both built-in and external display) and possibly the M5 Max.

All tested apps (BetterDisplay, MonitorControl, f.lux, Lunar) exhibit the very issue both in macOS Tahoe 26.3 and macOS Tahoe 26.4 RC. Tested on multiple Macs and installations on the MacBook Neo and MacBook M5 Pro.

This issue breaks several display related macOS apps.

Way to reproduce the issue using an affected app:

  • Install the app BetterDisplay (https://betterdisplay.pro)
  • Launch the app, open the app menu, choose Image Adjustments and try to adjust colors.
  • Adjustments take no effect

Way to reproduce the issue programmatically:

  • Attempt to use the affected macOS API feature:

https://developer.apple.com/documentation/coregraphics/cgsetdisplaytransferbytable(::::_:)


Here are the FB numbers:

  • FB22273730 (Filed this one as a developer on an unaffected MBP M3 Max)
  • FB22273782 (Filed from an affected MBP M5 Pro running 26.4 RC, with debug info attached)

Thank you for reporting this — it's a clear and well-documented write-up.

I was able to reproduce this on a MacBook M5 Max running macOS 26.3.1 (25D2128).

I built a small test app that exercises both CGSetDisplayTransferByTable and CGSetDisplayTransferByFormula with several different gamma tables (identity, warm tint, inverted, red-only, gamma 1.8). On the M5 Max:

  • Both APIs return kCGErrorSuccess
  • Reading back the table with CGGetDisplayTransferByTable returns the correct values that were just set
  • No visual change occurs on the display

The same test app works correctly on an M5 (non-Max) machine running the same macOS build — all gamma changes are immediately visible on screen.

This suggests the gamma tables are being stored correctly at the CoreGraphics level, but are not being applied to the display pipeline on M5 Max hardware.

Tested on both built-in and external displays.

I've related your two bugs (FB22273730 and FB22273782) together and attached the sample project I used to reproduce the problem to your bug report.

Please continue to test your software in release and pre-release versions of system software made available to you through your developer.apple.com account. When you do, add details about that into your bug report to keep it up to date. Please see https://developer.apple.com/download/.

CGSetDisplayTransferByTable is broken on macOS Tahoe 26.4 RC (and 26.3.1) with MacBook M5 Pro, Max and Neo
 
 
Q