Index: webkit/port/platform/graphics/skia/ImageSkia.cpp |
diff --git a/webkit/port/platform/graphics/skia/ImageSkia.cpp b/webkit/port/platform/graphics/skia/ImageSkia.cpp |
index 4d3ee12f2efe5c98df1834286a96733fcc177a26..631469968280b53eda6e2449fb27daaa5146245a 100644 |
--- a/webkit/port/platform/graphics/skia/ImageSkia.cpp |
+++ b/webkit/port/platform/graphics/skia/ImageSkia.cpp |
@@ -33,6 +33,7 @@ |
#include "BitmapImage.h" |
#include "BitmapImageSingleFrameSkia.h" |
#include "ChromiumBridge.h" |
+#include "FloatConversion.h" |
#include "FloatRect.h" |
#include "GraphicsContext.h" |
#include "Logging.h" |
@@ -371,8 +372,12 @@ void Image::drawPattern(GraphicsContext* context, |
// origin of the destination rect, which is what WebKit expects. Skia uses |
// the coordinate system origin as the base for the patter. If WebKit wants |
// a shifted image, it will shift it from there using the patternTransform. |
- matrix.postTranslate(SkFloatToScalar(phase.x()), |
- SkFloatToScalar(phase.y())); |
+ float adjustedX = phase.x() + floatSrcRect.x() * |
+ narrowPrecisionToFloat(patternTransform.a()); |
+ float adjustedY = phase.y() + floatSrcRect.y() * |
+ narrowPrecisionToFloat(patternTransform.d()); |
+ matrix.postTranslate(SkFloatToScalar(adjustedX), |
+ SkFloatToScalar(adjustedY)); |
shader->setLocalMatrix(matrix); |
SkPaint paint; |