Linear-light blending
Mixing colors after converting them to real light levels, so a 50% blend, blur, or fade does not come out unexpectedly dark.
See it
What it is
Linear-light blending converts encoded colors into values proportional to light, performs the mix or composite there, then converts the result back for display. Ordinary sRGB channel values use a transfer curve, so averaging the encoded numbers directly does not average the light they represent. The result is often a midpoint, blur, or antialiased edge that looks too dark.
Reach for it in image resizing, soft masks, glows, procedural textures, renderers, and any gradient meant to behave like mixed light. On the web, CSS can request srgb-linear interpolation; Photoshop buries the same choice in the Blend RGB Colors Using Gamma option under Color Settings; in a shader, decode sRGB, call GLSL mix() on the linear values, then encode the result back to sRGB.
Gotcha: linear-light math and alpha handling are separate problems. A transparent edge can still grow a dark fringe if its RGB and alpha channels are combined incorrectly. For compositing, use premultiplied alpha in addition to linear-light color, and do not decode or encode the alpha channel with the sRGB transfer function.
Ask AI for it
Build a WebGL fragment-shader comparison of naive sRGB mixing and linear-light blending. For the correct side, decode each RGB channel with the standard sRGB transfer function, combine the two opaque colors with GLSL mix(), then encode the result back to sRGB. Leave alpha linear; for the transparent example, premultiply RGB by alpha before compositing and unpremultiply only for output. Show both methods across the same black-to-white ramp and print the numeric 50% midpoint.