Color management and gamuts: why colors shift across devices
The same photo looks vivid on an iPhone and washed out on a desktop monitor — no device is broken; the two screens speak different color languages. Gamuts and color spaces give you a framework to judge why.
Gamut versus color space
A gamut is the range of colors a standard can represent: sRGB is the internet-era default, Display P3 is a size larger (the default of Apple screens and cameras), Rec.709 is the HD video standard, and BT.2020 is larger still, serving HDR and UHD. The containment runs roughly sRGB inside P3 inside BT.2020.
Beyond gamut, a complete color space also defines the white point, gamma (transfer function), and interpretation rules — the same gamut rendered under different rules yields different colors. Saying "an sRGB image" or "a P3 image" means the file is tagged under those rules.
Why colors change across devices
The trouble is mismatched tagging and interpretation: an iPhone photo is recorded in Display P3 by default. If the file keeps its P3 tag and reaches software working in sRGB, colors map correctly with only slight dulling; if the tag is lost, P3 data gets read as sRGB and saturation drops across the board — vivid reds, oranges, and greens fade first.
Video runs on a separate system: HD video is produced and tagged in Rec.709, and the player maps it onto a P3 screen. Mis-tagged material (old BT.601 footage interpreted as 709) shifts globally — a gray-green or magenta cast. That is the common root of color casts after converting legacy footage.
Discipline: keep the tag, do not eyeball
Browser image processing (Canvas and toBlob) moves pixel data but not color-space tags: a P3 image processed in the browser loses its tag and displays dull when read as sRGB. Color-critical work belongs in professional software; browser tools suit batch jobs that are not color-sensitive. For video, preserve the original Rec.709 tag through transcodes and compare frames before and after.
Judgment order for color problems: confirm the file tag first (which color space), then the display-side interpretation (is the software mapping), and only then suspect the data. Most "wrong colors" are tag-versus-interpretation mismatches, not corruption.