scale our shader to match the uvs
diff --git a/skia/renderer/src/skia_renderer.cpp b/skia/renderer/src/skia_renderer.cpp
index 7be0650..1f3752c 100644
--- a/skia/renderer/src/skia_renderer.cpp
+++ b/skia/renderer/src/skia_renderer.cpp
@@ -147,10 +147,16 @@
// since we treat them as arrays of points
assert((vertices->count() & 1) == 0);
+ // We do this because our UVs are normalized, but Skia expects them to be
+ // sized to the shader (i.e. 0..width, 0..height).
+ // To accomdate this, we effectively scaling the image down to 0..1 to
+ // match the scale of the UVs.
+ const auto scale = SkMatrix::Scale(1.0f/image->width(), 1.0f/image->height());
+
auto skiaImage = reinterpret_cast<const SkiaRenderImage*>(image)->skImage();
const SkSamplingOptions sampling(SkFilterMode::kLinear);
auto shader = skiaImage->makeShader(SkTileMode::kClamp, SkTileMode::kClamp,
- sampling, nullptr);
+ sampling, &scale);
SkPaint paint;
paint.setAlphaf(opacity);