diff --git a/Userland/Libraries/LibWeb/Layout/SVGPathBox.cpp b/Userland/Libraries/LibWeb/Layout/SVGPathBox.cpp index bb7d76da9d..01c25706da 100644 --- a/Userland/Libraries/LibWeb/Layout/SVGPathBox.cpp +++ b/Userland/Libraries/LibWeb/Layout/SVGPathBox.cpp @@ -29,27 +29,32 @@ void SVGPathBox::paint(PaintContext& context, PaintPhase phase) auto& path_element = dom_node(); auto& path = path_element.get_path(); - // We need to fill the path before applying the stroke, however the filled - // path must be closed, whereas the stroke path may not necessary be closed. - // Copy the path and close it for filling, but use the previous path for stroke - auto closed_path = path; - closed_path.close(); - - // Fills are computed as though all paths are closed (https://svgwg.org/svg2-draft/painting.html#FillProperties) Gfx::AntiAliasingPainter painter { context.painter() }; auto& svg_context = context.svg_context(); auto offset = absolute_position(); painter.translate(offset); - painter.fill_path( - closed_path, - path_element.fill_color().value_or(svg_context.fill_color()), - Gfx::Painter::WindingRule::EvenOdd); - painter.stroke_path( - path, - path_element.stroke_color().value_or(svg_context.stroke_color()), - path_element.stroke_width().value_or(svg_context.stroke_width())); + if (auto fill_color = path_element.fill_color().value_or(svg_context.fill_color()); fill_color.alpha() > 0) { + // We need to fill the path before applying the stroke, however the filled + // path must be closed, whereas the stroke path may not necessary be closed. + // Copy the path and close it for filling, but use the previous path for stroke + auto closed_path = path; + closed_path.close(); + + // Fills are computed as though all paths are closed (https://svgwg.org/svg2-draft/painting.html#FillProperties) + painter.fill_path( + closed_path, + fill_color, + Gfx::Painter::WindingRule::EvenOdd); + } + + if (auto stroke_color = path_element.stroke_color().value_or(svg_context.stroke_color()); stroke_color.alpha() > 0) { + painter.stroke_path( + path, + stroke_color, + path_element.stroke_width().value_or(svg_context.stroke_width())); + } painter.translate(-offset); }