diff --git a/gm/blurs.cpp b/gm/blurs.cpp
index 96a9e30..fdf10be 100644
--- a/gm/blurs.cpp
+++ b/gm/blurs.cpp
@@ -17,15 +17,15 @@
 
 protected:
 
-    SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() override {
         return SkString("blurs");
     }
 
-    SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() override {
         return SkISize::Make(700, 500);
     }
 
-    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) override {
         SkBlurStyle NONE = SkBlurStyle(-999);
         static const struct {
             SkBlurStyle fStyle;
@@ -101,15 +101,15 @@
 //
 class Blur2RectsGM : public skiagm::GM {
 public:
-    SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() override {
         return SkString("blur2rects");
     }
 
-    SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() override {
         return SkISize::Make(700, 500);
     }
 
-    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) override {
         SkPaint paint;
 
         paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle,
@@ -133,15 +133,15 @@
 
 class Blur2RectsNonNinePatchGM : public skiagm::GM {
 public:
-    SkString onShortName() SK_OVERRIDE {
+    SkString onShortName() override {
         return SkString("blur2rectsnonninepatch");
     }
 
-    SkISize onISize() SK_OVERRIDE {
+    SkISize onISize() override {
         return SkISize::Make(700, 500);
     }
 
-    void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+    void onDraw(SkCanvas* canvas) override {
         SkPaint paint;
         paint.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle,
                                                      4.3f))->unref();
