Show HN: An .icc Profile That Combines P3 and Adobe RGB into a Single Gamut
by Nrbelex | 2025-12-31 22:13:21+00:00
Since most photo-centric services like Flickr still accept and display only JPEGs, and JPEG is only 8 bits, photographers are forced to make some hard decisions about the color profile to embed when displaying photos that contain very rich colors that fall outside of sRGB. Display P3 and Adobe RGB each solve the problem only partially. I created a new color profile that includes the union of the two, creating the best of both worlds and ensuring that virtually every display can be used to its fullest.

Color management is a largely solved problem, so I've historically used ProPhoto RGB, but this has the real downside of introducing banding due to the stretching of such a wide color palette across so few steps (256 per channel). It's so wide that many of those few steps (a) can't be rendered on modern monitors, and (b) are not even visible to humans (i.e., are imaginary). Colors represented by those steps are wasted.

Adobe RGB expands upon sRGB primarily in the cyan-green direction but leaves out vibrant reds and yellows. Lots of displays cover 100% of aRGB (but less of P3).

Display P3 expands upon sRGB primarily in the red and yellow direction but leaves out vibrant cyans and greens. Lots of displays, most notably modern smartphones, cover 100% of P3 (but less of aRGB).

Both of them help minimize wasted bits, but neither of them covers all sets of realistic vibrant colors. I worked with Gemini and Copilot to create a color profile for the minimal triangle that covers the farthest reaches of both color spaces.

Specifically, I asked Gemini to do the complex math to establish the correct x,y primaries to ensure the full convex hulls of both gamuts is within the new gamut while keeping it as small as possible. In theory, this profile covers all of the colors that modern monitors can realistically be expected to display without clipping, while simultaneously minimizing wasted bits and thereby minimizing banding. It uses version 2.1, sets the white point at D65, and borrows the gamma curve from sRGB. Gemini created Python script to generate the .icc profile itself. Copilot was also used to review, critique, refine, and ultimately validate the approach. Per the LLMs, this union profile expands beyond SRGB by 52.8%, beyond P3 by 12.7%, and beyond
aRGB by 13.3%. It is 38.2% smaller than ProPhoto RGB.

The CIE xy coordinates are:

Red: x:0.6800, y:0.3200 (the same as P3)
Green: x:0.2125, y: 0.7368 (custom)
Blue: x:0.1500, y:0.0600 (the same as P3)

It's available for you to try here: https://drive.google.com/file/d/1A74csM5S_fh1-xqbV2q7AMKn3e1...

A graphic showing ProPhoto RGB is here: https://drive.google.com/file/d/1MhIg8cBLCVQRqMUHNHJjbAGU9Ud...
Nrbelex-P3-aRGB-Union is here: https://drive.google.com/file/d/1rOjgIOziEx7xkO7dFkMJdowS5Ty...
And sRGB is here: https://drive.google.com/file/d/1YmZmSrCnXVrdtDPK6rzjT4NeFqP...

A real photo using the profile is available here: https://flic.kr/p/2rPmvnk

I'm interested in hearing whether this profile works well for others and the conceptual risks and pitfalls of this approach (putting aside general color management concerns, which will always arise when using something other than sRGB). Thanks!