diff --git a/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp b/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp index db39eea7c5..0f72c20d43 100644 --- a/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp +++ b/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp @@ -177,7 +177,11 @@ void paint_linear_gradient(PaintContext& context, Gfx::IntRect const& gradient_r // For any given point between the two color stops, // determine the point’s location as a percentage of the distance between the two color stops. // Let this percentage be P. - auto p = (position - previous_stop.position) / (next_stop.position - previous_stop.position); + auto stop_length = next_stop.position - previous_stop.position; + // FIXME: Avoids NaNs... Still not quite correct? + if (stop_length <= 0) + return 1; + auto p = (position - previous_stop.position) / stop_length; if (!next_stop.transition_hint.has_value()) return p; if (*next_stop.transition_hint >= 1)