diff --git a/samplecode/GMSampleView.h b/samplecode/GMSampleView.h
index 0b224a5..5c7729a 100644
--- a/samplecode/GMSampleView.h
+++ b/samplecode/GMSampleView.h
@@ -15,16 +15,23 @@
 
 class GMSampleView : public SampleView {
 private:
+    bool fShowSize;
     typedef skiagm::GM GM;
 
 public:
     GMSampleView(GM* gm)
-    : fGM(gm) {}
+    : fGM(gm), fShowSize(false) {}
 
     virtual ~GMSampleView() {
         delete fGM;
     }
 
+    static SkEvent* NewShowSizeEvt(bool doShowSize) {
+        SkEvent* evt = SkNEW_ARGS(SkEvent, ("GMSampleView::showSize"));
+        evt->setFast32(doShowSize);
+        return evt;
+    }
+
 protected:
     virtual bool onQuery(SkEvent* evt) {
         if (SampleCode::TitleQ(*evt)) {
@@ -35,9 +42,28 @@
         }
         return this->INHERITED::onQuery(evt);
     }
+    
+    virtual bool onEvent(const SkEvent& evt) SK_OVERRIDE {
+        if (evt.isType("GMSampleView::showSize")) {
+            fShowSize = SkToBool(evt.getFast32());
+            return true;
+        }
+        return this->INHERITED::onEvent(evt);
+    }
 
     virtual void onDrawContent(SkCanvas* canvas) {
-        fGM->drawContent(canvas);
+        {
+            SkAutoCanvasRestore acr(canvas, fShowSize);
+            fGM->drawContent(canvas);
+        }
+        if (fShowSize) {
+            SkISize size = fGM->getISize();
+            SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()),
+                                      SkIntToScalar(size.height()));
+            SkPaint paint;
+            paint.setColor(0x40FF8833);
+            canvas->drawRect(r, paint);
+        }
     }
 
     virtual void onDrawBackground(SkCanvas* canvas) {
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 5ff1b4e..c94a772 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -92,6 +92,8 @@
 
 static SampleWindow* gSampleWindow;
 
+static bool gShowGMBounds;
+
 static void postEventToSink(SkEvent* evt, SkEventSink* sink) {
     evt->setTargetID(sink->getSinkID())->post();
 }
@@ -1731,6 +1733,8 @@
 }
 #endif
 
+//extern bool gIgnoreFastBlurRect;
+
 bool SampleWindow::onHandleChar(SkUnichar uni) {
     {
         SkView* view = curr_view(this);
@@ -1773,6 +1777,11 @@
     }
 
     switch (uni) {
+        case 'B':
+//            gIgnoreFastBlurRect = !gIgnoreFastBlurRect;
+            this->inval(NULL);
+            break;
+
         case 'f':
             // only
             toggleFPS();
@@ -1781,6 +1790,12 @@
             fRequestGrabImage = true;
             this->inval(NULL);
             break;
+        case 'G':
+            gShowGMBounds = !gShowGMBounds;
+            postEventToSink(GMSampleView::NewShowSizeEvt(gShowGMBounds),
+                            curr_view(this));
+            this->inval(NULL);
+            break;
         case 'i':
             this->zoomIn();
             break;
