diff --git a/Userland/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp b/Userland/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp index ca850836c8..5f1214e4c9 100644 --- a/Userland/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp +++ b/Userland/Libraries/LibWeb/Painting/DisplayListPlayerSkia.cpp @@ -1143,8 +1143,14 @@ CommandResult DisplayListPlayerSkia::paint_radial_gradient(PaintRadialGradient c auto const& rect = command.rect; auto center = to_skia_point(command.center.translated(command.rect.location())); - auto radius = command.size.height(); - auto shader = SkGradientShader::MakeRadial(center, radius, colors.data(), positions.data(), positions.size(), SkTileMode::kClamp, 0); + + auto const size = command.size.to_type(); + SkMatrix matrix; + // Skia does not support specifying of horizontal and vertical radius's separately, + // so instead we apply scale matrix + matrix.setScale(size.width() / size.height(), 1.0f, center.x(), center.y()); + + auto shader = SkGradientShader::MakeRadial(center, size.height(), colors.data(), positions.data(), positions.size(), SkTileMode::kClamp, 0, &matrix); SkPaint paint; paint.setShader(shader);