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();
});
}