olo

In April 2025, Berkeley researchers stimulated a single cone class in the human retina and reported a color no natural light can produce. This page approximates it the only way a screen can — by running the cone response through the standard CIE and sRGB matrix chain, then honestly showing what falls off the edge of the gamut.

The approximation

Naive clip#000000
Gamut-mapped (white axis)#000000
Max chroma (Oklab, same hue)#000000

None of these is olo. The real color sits outside every triangle your display can draw. The middle swatch slides the point in along the white axis. The right swatch preserves that swatch's Oklab hue and pushes chroma to the sRGB boundary — the most saturated appearance of olo your display can produce.

Cone stimulus

The Berkeley team hit only medium-wavelength (M) cones, leaving L and S dark. In LMS cone space this is a basis vector:

LMS = [ 0, 1, 0 ]         # M-only stimulation

LMS → XYZ (Hunt-Pointer-Estevez, D65)

Invert the HPE cone-fundamentals matrix and apply:

M_HPE⁻¹ · LMS =
[  1.86007  -1.12948   0.21990 ]   [ 0 ]     [ -1.12948 ]
[  0.36122   0.63881  -0.00006 ] · [ 1 ]  =  [  0.63881 ]
[  0        0         1.08909  ]   [ 0 ]     [  0       ]
X = –Y = –Z = –

X is already negative — a first signal the point lies outside physically realisable stimuli under this basis.

XYZ → linear sRGB (Bradford D65)

M_sRGB · XYZ =
[  3.2406  -1.5372  -0.4986 ]
[ -0.9689   1.8758   0.0415 ] · XYZ
[  0.0557  -0.2040   1.0570 ]
R = –G = –B = –

Two channels are negative, one is above 1. The point is far outside the sRGB cube — this is olo's fingerprint.

Wider gamuts

sRGB is a narrow triangle inside the horseshoe of visible chromaticities. Display P3, Rec. 2020, Adobe RGB, and ProPhoto RGB each stretch the triangle further out. Running olo's XYZ through each space's matrix shows how far outside each one it still lies — and if your display is wide-gamut, the P3 and Rec.2020 swatches below will look measurably more saturated than the sRGB ones above.

Display P3–
Rec. 2020–
Adobe RGB–

Swatches are drawn via CSS color() in each space; on a P3 or Rec.2020 display they render at their native chroma, on an sRGB display they clip back into sRGB.

How far out of gamut is olo, per space?

Same XYZ, different primaries. Any negative or above-1 channel means olo lies outside that space's cube. The wider the gamut, the smaller the excursion — but no display standard swallows it whole.

Encodings, not gamuts

ICtCp (Rec. 2100). A perceptually uniform coding built from LMS → PQ nonlinearity → orthogonal I/Ct/Cp. It isn't a wider gamut than Rec.2020, but it separates intensity from chroma more evenly than YCbCr, so chroma-subsampled HDR loses less of colors like olo. Computed values below.

I = –Ct = –Cp = –

xvYCC (IEC 61966-2-4). Rec.709 primaries, but the YCbCr signal is allowed to swing outside 0–1 in linear RGB (roughly −0.5 to 1.5), letting the wire carry out-of-gamut colors that a wide-gamut display could later render. It buys coding headroom, not a wider triangle — olo's linear R of −4.6 blows past even xvYCC's extended range.

Three ways down to a screen

Clip. Set negatives to 0, cap positives at 1, apply the sRGB transfer. Cheap and lossy; hue drifts hard toward pure green.

Desaturate along the achromatic axis. Add the most-negative channel to every channel (equivalent to mixing with a bit of white until the point re-enters the cube), normalize, then gamma-encode. Preserves direction; sacrifices saturation.

Max chroma at same hue. Take the gamut-mapped result, convert to Oklab, hold hue fixed, then bisect chroma outward until we hit the sRGB cube. This lands on the same hex — the white-axis slide already put us on the cube boundary. Any further sliding trades hue for saturation.

L = –Cmax = –h° = –

The linear-sRGB point sits at (0, 1, 0.6415) — the R channel is pinned at zero, meaning we're on the R=0 face of the sRGB cube. Both HSL saturation (100%) and Oklab chroma agree: #00FFD2 is already the most saturated appearance of olo an sRGB display can produce at this luminance.