diff --git a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp index 2ce81f4ff6..8e7ff2b9c0 100644 --- a/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp +++ b/Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.cpp @@ -265,11 +265,17 @@ static Gfx::Painter::WindingRule parse_fill_rule(StringView fill_rule) return Gfx::Painter::WindingRule::Nonzero; } -void CanvasRenderingContext2D::fill_internal(Gfx::Path& path, StringView fill_rule) +void CanvasRenderingContext2D::fill_internal(Gfx::Path& path, StringView fill_rule_value) { draw_clipped([&](auto& painter) { path.close_all_subpaths(); - painter.fill_path(path, *drawing_state().fill_style.to_gfx_paint_style(), parse_fill_rule(fill_rule)); + auto& drawing_state = this->drawing_state(); + auto fill_rule = parse_fill_rule(fill_rule_value); + if (auto color = drawing_state.fill_style.as_color(); color.has_value()) { + painter.fill_path(path, *color, fill_rule); + } else { + painter.fill_path(path, drawing_state.fill_style.to_gfx_paint_style(), fill_rule); + } return path.bounding_box(); }); }