Maybe you’ve noticed but many people suffer from this (and have not found a solution over years) – it’s not really a bug, more of an Apple-feature gone wrong (sounds familiar?). When you have .rec709 (or similar low range) content it gets stretched to P3 and not look consistent across all sorts of software and browsers. Apple introduced something called ColorSync a longer while back, initially meant for images (print/scan/preview) only. A shorter while back Apple broadened its functionality to cover video as well – to ensure display accuracy across all Apple devices and systems. This mainly concerns internal/External Apple Retina Displays and supported LG UltraSharp Thunderbolt ones, but might also help on other configurations such as MacBook Pros.
So, cool, macOS now makes sure your pictures and videos look the same on all (Apple) devices – but there is a catch: only Apple software (well, mostly*) supports this – namely QuickTime, Safari, Final Cut Pro X and QuickLook) – and you will run into lots of troubles with other, non-Apple, apps (e.g. Adobe Premiere Pro, VLC or say Firefox and YouTube), obviously this color sync would not work on a non-Apple hardware product as well, so expect strong shifts in color and gamma in “the real world”.
Watch my video tutorial about it and fix it with a cheap hack
The reason being ColorSync enables certain LUTs for your graphics card in the background on a system level to compensate and shift non-wide gamut (like .rec709 or sRGB, which most video is!) color+gamma levels accordingly, trying to make the best of your P3 display. It sounds highly advantageous and cool but in the end you just don’t see the “real” image, meaning its raw values but shifted ones instead. You want to see a truthful reference image which is certainly possible on those really great Apple (cinema) displays. If you do have wide gamut (P3, .rec2020 or similar) source video, you should NOT apply this hack but transform in the end to have a .rec709 check-up as well.
If you go into Display Preferences (in your system preferences) and change the tab to “color” you will see you can choose from a bunch of ICC profiles, which are all basically LUTs for your graphics card. Don’t play around with it too much but definitely disable “True Tone” on latest Mac models. By default your Mac uses one that matches your screen Apple put in and optimized. BUT ColorSync is working its “magic” in the background and screwing with the otherwise well calibrated levels to transform any signal to P3. While not every display can natively display P3, it can certainly run rec709 or sRGB which will both look a lot punchier/contrasty and that’s the way it should be on such high-performance LED screens.
One solution (a rather pricey one) would be having a professional calibrate your system and screen so you can actually see the right color/gamma values depending on your environment without the system interfering. Another, free and quick, solution is below.
You might say: “But isn’t having a wide gamut P3 display better for working with color and gives more control over details?” My answer to that: “Only if your source video is wide gamut (not necessarily P3 but say rec2020) as well and you know what you are doing since the outlet (where your audience will see the video) has to support it as well!”. In nearly all cases your source is rec709 gamma 2.4 (legal range), which is the international HDTV standard and therefor most cameras record in rec709 (which is basically sRGB but with 20% more gamma, sRGB being 2.2). If you work with certain LOG algorithms or special format flavors this might differ but you have to think about your outlet and audience. What are they going to see? The smart choice is to stay within rec709 or sRGB because those are the only thing, everybody can see and display! Computer systems and monitors operate in gamma 2.2 as standard setting, the web operates within gamma 2.2 as well – so sRGB is the best choice which means: rec709 should be the way to go (yes, gamma is different but on modern, bright LED screens this is fine).
The quickest, free solution is easy but kind of secret and not well documented at all! You need a display profile that circumvents ColorSync, tricking your system into displaying raw values only without transforming them! And the only profile (provided by Apple in 2012 by the way) to do so is called HD 709-A. Some people don’t have it for some reason even though it’s by Apple, so you can download it below (and put it in “User/Library/Color Sync/Profiles”)! It will take care of this tedious issue once and for all. In my experience, color and gamma are consistent across all kinds of different systems and hardware setups – yes, even broadcast monitoring/referencing setups. NOT cinema obviously, since the color standard there is DCI P3 in XYZ levels – not RGB (this is how all digital displays work).
Download HD 709-A.icc
* There is one professional video player supporting ColorSync besides QT X: “Switch” by Telestream (free with watermark)