| Index: src/core/SkDraw.cpp
 | 
| diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
 | 
| index 6ddd0d274fa2d6cdf8f8401e29107bac8495101a..f9e06e52326cb2d4ddb4d2ca7457f8cad21cb551 100644
 | 
| --- a/src/core/SkDraw.cpp
 | 
| +++ b/src/core/SkDraw.cpp
 | 
| @@ -72,11 +72,12 @@ private:
 | 
|   */
 | 
|  class SkAutoBitmapShaderInstall : SkNoncopyable {
 | 
|  public:
 | 
| -    SkAutoBitmapShaderInstall(const SkBitmap& src, const SkPaint& paint)
 | 
| +    SkAutoBitmapShaderInstall(const SkBitmap& src, const SkPaint& paint,
 | 
| +                              const SkMatrix* localMatrix = NULL)
 | 
|              : fPaint(paint) /* makes a copy of the paint */ {
 | 
|          fPaint.setShader(CreateBitmapShader(src, SkShader::kClamp_TileMode,
 | 
|                                              SkShader::kClamp_TileMode,
 | 
| -                                            &fAllocator));
 | 
| +                                            localMatrix, &fAllocator));
 | 
|          // we deliberately left the shader with an owner-count of 2
 | 
|          SkASSERT(2 == fPaint.getShader()->getRefCnt());
 | 
|      }
 | 
| @@ -1374,18 +1375,16 @@ void SkDraw::drawSprite(const SkBitmap& bitmap, int x, int y,
 | 
|          }
 | 
|      }
 | 
|  
 | 
| -    SkAutoBitmapShaderInstall install(bitmap, paint);
 | 
| -    const SkPaint& shaderPaint = install.paintWithShader();
 | 
| -
 | 
|      SkMatrix        matrix;
 | 
|      SkRect          r;
 | 
|  
 | 
|      // get a scalar version of our rect
 | 
|      r.set(bounds);
 | 
|  
 | 
| -    // tell the shader our offset
 | 
| +    // create shader with offset
 | 
|      matrix.setTranslate(r.fLeft, r.fTop);
 | 
| -    shaderPaint.getShader()->setLocalMatrix(matrix);
 | 
| +    SkAutoBitmapShaderInstall install(bitmap, paint, &matrix);
 | 
| +    const SkPaint& shaderPaint = install.paintWithShader();
 | 
|  
 | 
|      SkDraw draw(*this);
 | 
|      matrix.reset();
 | 
| 
 |