From f8799885def98ed99f3bb2a9738cb932d0ae5f6b Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 31 Oct 2023 21:04:10 -0400 Subject: [PATCH] LibPDF: Clamp sRGB channels before converting to u8 in CalRGB code Sometimes the numbers end up just slightly above 1.0f, which previously caused an overflow. --- Userland/Libraries/LibPDF/ColorSpace.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibPDF/ColorSpace.cpp b/Userland/Libraries/LibPDF/ColorSpace.cpp index 3d18e281ff..47789dcdad 100644 --- a/Userland/Libraries/LibPDF/ColorSpace.cpp +++ b/Userland/Libraries/LibPDF/ColorSpace.cpp @@ -342,9 +342,9 @@ PDFErrorOr CalRGBColorSpace::color(ReadonlySpan arguments) const auto d65_normalized = convert_to_d65(scaled_black_point_xyz); auto srgb = convert_to_srgb(d65_normalized); - auto red = static_cast(srgb[0] * 255.0f); - auto green = static_cast(srgb[1] * 255.0f); - auto blue = static_cast(srgb[2] * 255.0f); + auto red = static_cast(clamp(srgb[0], 0.0f, 1.0f) * 255.0f); + auto green = static_cast(clamp(srgb[1], 0.0f, 1.0f) * 255.0f); + auto blue = static_cast(clamp(srgb[2], 0.0f, 1.0f) * 255.0f); return Color(red, green, blue); }