This is caused by the Filmic Tonemapper in Unreal, specifically the Tone Curve, an S-shaped filmic curve in the tonemapper. It compresses values near 1.0 to a curve to prevent clipping to pure white, meaning that pure white (1.0) input comes out as roughly 0.95, or a bit gray.
To enable full brightness while still enjoying all the other benefits of the Tonemapper, create a post-process volume and check “Infinite Extent (unbound)” so it applies to the entire level instead of just the volume. Then, set the “Film - Shoulder” parameter to 1.
If you’d rather fully skip the Tone Curve for a completely pixel-perfect color matching, you can instead set the prost-process volume’s “Color Grading - Misc - Tone Curve Amount” to 0, and “Expand Gamut” to 0.
Auto Exposure in your project settings also affects brightness, so either turn it off or use “EyeAdaptationInverse” in your unlit material to account for it.
Local Exposure can also affect the brightness, you can turn that off by putting this into your DefaultGame.ini file:
[ConsoleVariables]
r.LocalExposure=0
And turn off Bloom if you don’t need it.
If you only want some objects in your scene not to have any color grading, you can alternatively use a stencil buffer: Using Custom Stencil to Selectively Bypass Postprocessing | Epic Developer Community