diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index 0c191d0..827ebe8 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -674,13 +674,13 @@
                             const SkPaint* paint = NULL);
 
     enum DrawBitmapRectFlags {
-        kNone_DrawBitmapRectflag            = 0x0,
+        kNone_DrawBitmapRectFlag            = 0x0,
         /**
          *  When filtering is enabled, allow the color samples outside of
          *  the src rect (but still in the src bitmap) to bleed into the
          *  drawn portion
          */
-        kBleed_DrawBitmapRectFlag            = 0x1,
+        kBleed_DrawBitmapRectFlag           = 0x1,
     };
 
     /** Draw the specified bitmap, with the specified matrix applied (before the
@@ -694,16 +694,16 @@
     virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
                                       const SkRect& dst,
                                       const SkPaint* paint = NULL,
-                                      DrawBitmapRectFlags flags = kNone_DrawBitmapRectflag);
+                                      DrawBitmapRectFlags flags = kNone_DrawBitmapRectFlag);
 
     void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst,
                         const SkPaint* paint = NULL) {
-        this->drawBitmapRectToRect(bitmap, NULL, dst, paint, kNone_DrawBitmapRectflag);
+        this->drawBitmapRectToRect(bitmap, NULL, dst, paint, kNone_DrawBitmapRectFlag);
     }
 
     void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* isrc,
                         const SkRect& dst, const SkPaint* paint = NULL,
-                        DrawBitmapRectFlags flags = kNone_DrawBitmapRectflag) {
+                        DrawBitmapRectFlags flags = kNone_DrawBitmapRectFlag) {
         SkRect realSrcStorage;
         SkRect* realSrcPtr = NULL;
         if (isrc) {
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index d143b85..c59cd04 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1859,7 +1859,7 @@
             d.fLeft = dstX[x];
             d.fRight = dstX[x+1];
             this->internalDrawBitmapRect(bitmap, &s, d, paint,
-                                         kNone_DrawBitmapRectflag);
+                                         kNone_DrawBitmapRectFlag);
         }
     }
 }
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp
index 9e9cfc4..08097a9 100644
--- a/src/core/SkPicturePlayback.cpp
+++ b/src/core/SkPicturePlayback.cpp
@@ -836,7 +836,7 @@
                 const SkRect& dst = reader.skipT<SkRect>();     // required
                 SkCanvas::DrawBitmapRectFlags flags;
 #ifndef DELETE_THIS_CODE_WHEN_SKPS_ARE_REBUILT_AT_V13_AND_ALL_OTHER_INSTANCES_TOO
-                flags = SkCanvas::kNone_DrawBitmapRectflag;
+                flags = SkCanvas::kNone_DrawBitmapRectFlag;
                 // TODO: remove this backwards compatibility code once the .skps are
                 // regenerated
                 SkASSERT(32 == size || 48 == size ||    // old sizes
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 7a1aea2..b18c782 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -1083,7 +1083,7 @@
                              const SkPaint& paint) {
     // We cannot call drawBitmapRect here since 'm' could be anything
     this->drawBitmapCommon(draw, bitmap, NULL, m, paint,
-                           SkCanvas::kNone_DrawBitmapRectflag);
+                           SkCanvas::kNone_DrawBitmapRectFlag);
 }
 
 void SkGpuDevice::drawBitmapCommon(const SkDraw& draw,
diff --git a/src/pipe/SkGPipeRead.cpp b/src/pipe/SkGPipeRead.cpp
index 399c9be..a5f7144 100644
--- a/src/pipe/SkGPipeRead.cpp
+++ b/src/pipe/SkGPipeRead.cpp
@@ -572,7 +572,7 @@
     } else {
         src = NULL;
     }
-    SkCanvas::DrawBitmapRectFlags dbmrFlags = SkCanvas::kNone_DrawBitmapRectflag;
+    SkCanvas::DrawBitmapRectFlags dbmrFlags = SkCanvas::kNone_DrawBitmapRectFlag;
     if (flags & kDrawBitmap_Bleed_DrawOpFlag) {
         dbmrFlags = (SkCanvas::DrawBitmapRectFlags)(dbmrFlags|SkCanvas::kBleed_DrawBitmapRectFlag);
     }
