| Index: src/gpu/GrBitmapTextContext.cpp
 | 
| diff --git a/src/gpu/GrBitmapTextContext.cpp b/src/gpu/GrBitmapTextContext.cpp
 | 
| index 790590dbcc2c75707cae674aee366f230407bcc3..94b2770b23c6c90c02d67bfd519cd3d26ccda60e 100755
 | 
| --- a/src/gpu/GrBitmapTextContext.cpp
 | 
| +++ b/src/gpu/GrBitmapTextContext.cpp
 | 
| @@ -154,9 +154,10 @@ void GrBitmapTextContext::onDrawText(const GrPaint& paint, const SkPaint& skPain
 | 
|      SkFixed fx = SkScalarToFixed(x) + halfSampleX;
 | 
|      SkFixed fy = SkScalarToFixed(y) + halfSampleY;
 | 
|  
 | 
| -    // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix
 | 
| -    if (kARGB_GrMaskFormat != fCurrMaskFormat && !viewMatrix.invert(&fLocalMatrix)) {
 | 
| -        SkDebugf("Cannot invert viewmatrix\n");
 | 
| +    // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix, but for
 | 
| +    // performance reasons we just invert here instead
 | 
| +    if (!viewMatrix.invert(&fLocalMatrix)) {
 | 
| +            SkDebugf("Cannot invert viewmatrix\n");
 | 
|      }
 | 
|  
 | 
|      while (text < stop) {
 | 
| @@ -201,11 +202,9 @@ void GrBitmapTextContext::onDrawPosText(const GrPaint& paint, const SkPaint& skP
 | 
|      SkGlyphCache*       cache = autoCache.getCache();
 | 
|      GrFontScaler*       fontScaler = GetGrFontScaler(cache);
 | 
|  
 | 
| -    // store original matrix before we reset, so we can use it to transform positions
 | 
| -    SkMatrix ctm = viewMatrix;
 | 
| -
 | 
| -    // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix
 | 
| -    if (kARGB_GrMaskFormat != fCurrMaskFormat && !viewMatrix.invert(&fLocalMatrix)) {
 | 
| +    // if we have RGB, then we won't have any SkShaders so no need to use a localmatrix, but for
 | 
| +    // performance reasons we just invert here instead
 | 
| +    if (!viewMatrix.invert(&fLocalMatrix)) {
 | 
|              SkDebugf("Cannot invert viewmatrix\n");
 | 
|      }
 | 
|  
 | 
| @@ -214,12 +213,12 @@ void GrBitmapTextContext::onDrawPosText(const GrPaint& paint, const SkPaint& skP
 | 
|  
 | 
|      const char*        stop = text + byteLength;
 | 
|      SkTextAlignProc    alignProc(fSkPaint.getTextAlign());
 | 
| -    SkTextMapStateProc tmsProc(ctm, offset, scalarsPerPosition);
 | 
| +    SkTextMapStateProc tmsProc(viewMatrix, offset, scalarsPerPosition);
 | 
|      SkFixed halfSampleX = 0, halfSampleY = 0;
 | 
|  
 | 
|      if (cache->isSubpixel()) {
 | 
|          // maybe we should skip the rounding if linearText is set
 | 
| -        SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(ctm);
 | 
| +        SkAxisAlignment baseline = SkComputeAxisAlignmentForHText(viewMatrix);
 | 
|  
 | 
|          SkFixed fxMask = ~0;
 | 
|          SkFixed fyMask = ~0;
 | 
| 
 |