"It looks different on my monitor": a field guide
When two people see different colours from the same file, the answer is always in three places. Here's how to find it in thirty seconds.
You’ve had the call. The DP says the exposure was fine on set. Editorial says the dailies look dark. The colourist says the CDL is right. Everyone’s looking at the same file, nobody’s seeing the same thing.
The answer is almost always one of three things. They’re independent, they’re easy to check, and most tools make it surprisingly hard to tell which one is wrong.
Three axes, not one
When people say “colour space” they usually mean one thing. Unfortunately, there are three, and mixing them up accounts for most of the colour miscommunication in post.
Primaries: the triangle
Colour primaries define which colours your system can represent, the triangle on a CIE diagram. Rec. 709 is a small triangle. P3 is bigger. Rec. 2020 is bigger still. When someone says “this footage is in 709,” they might mean 709 primaries, but that’s only one of the three axes.
The primaries tell you nothing about how bright values are encoded or how RGB maps to YCbCr. Two files with identical primaries can look completely different if the other two axes don’t match.
Transfer function: the curve
The transfer function defines how scene-linear light maps to code values. It’s a 1D curve with nothing to do with which colours are available, only how brightness is distributed across the code value range.
Rec. 709 uses a specific gamma curve. PQ (for HDR) uses a very different one. ARRI Log-C is a logarithmic encoding designed to spread the sensor’s dynamic range evenly across the available bits.
A file tagged as “Rec. 709” with a Log-C transfer function will look flat and grey if your player applies the 709 gamma. The primaries are right but the curve is wrong, and the image looks nothing like the scene.
Same frame, same file. The only difference is which transfer function the player assumed.
Matrix coefficients: the conversion
When RGB video is encoded as YCbCr (which is most broadcast and camera-originated video), the conversion uses matrix coefficients that define the relative weights of R, G, and B in the luma channel. BT. 601, BT. 709, and BT. 2020 all use different weights.
Apply 601 matrix coefficients to 709 footage and your skin tones shift. It’s subtle, maybe a degree or two on the vectorscope, but it’s the kind of error that accumulates through a pipeline and becomes visible in the grade.
The thirty-second diagnostic
Next time something looks wrong, check these in order:
- Is the transfer function right? If the image is flat/milky or crushed/contrasty, this is usually it. Check what your player thinks the encoding is.
- Are the primaries right? If colours are shifted but brightness looks correct, check the gamut assignment.
- Are the matrix coefficients right? If skin tones are subtly off and everything else seems fine, this is the one.
Your tools should tell you which values they’re using for each axis. If they don’t, you’re debugging blind, and that call with the DP isn’t going to get any shorter.