diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index 4785baa..5e3e26b 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -821,6 +821,10 @@
     uint32_t getGenerationID() const;
 #endif
 
+    // returns true if the paint's settings (e.g. xfermode + alpha) resolve to
+    // mean that we need not draw at all (e.g. SrcOver + 0-alpha)
+    bool nothingToDraw() const;
+
 private:
     SkTypeface*     fTypeface;
     SkScalar        fTextSize;
@@ -865,10 +869,6 @@
     const SkRect& computeStrokeFastBounds(const SkRect& orig,
                                           SkRect* storage) const;
 
-    // returns true if the paint's settings (e.g. xfermode + alpha) resolve to
-    // mean that we need not draw at all (e.g. SrcOver + 0-alpha)
-    bool nothingToDraw() const;
-
     enum {
         kCanonicalTextSizeForPaths = 64
     };
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 70b53fe..f563cd1 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -53,13 +53,6 @@
             SkCanvas::kAA_EdgeType : SkCanvas::kBW_EdgeType;
 }
 
-#if 0
-    #define CHECK_NOTHING_TO_DRAW(paint)    \
-        do { if ((paint).nothingToDraw()) return; } while (0)
-#else
-    #define CHECK_NOTHING_TO_DRAW(paint)    do {} while (0)
-#endif
-
 ///////////////////////////////////////////////////////////////////////////////
 
 /*  This is the record we keep for each SkDevice that the user installs.
@@ -317,30 +310,35 @@
 };
 
 bool AutoDrawLooper::next(SkDrawFilter::Type drawType) {
+    fPaint = NULL;
     if (fDone) {
-        fPaint = NULL;
         return false;
     }
-    if (!fLooper && !fFilter) {
-        fDone = true;
-        fPaint = &fOrigPaint;
-        return true;
-    }
 
-    SkPaint* paint = fLazyPaint.set(fOrigPaint);
-    if (fLooper && !fLooper->next(fCanvas, paint)) {
+    if (fLooper || fFilter) {
+        SkPaint* paint = fLazyPaint.set(fOrigPaint);
+        if (fLooper && !fLooper->next(fCanvas, paint)) {
+            fDone = true;
+            return false;
+        }
+        if (fFilter) {
+            fFilter->filter(paint, drawType);
+            if (NULL == fLooper) {
+                // no looper means we only draw once
+                fDone = true;
+            }
+        }
+        fPaint = paint;
+    } else {
         fDone = true;
+        fPaint = &fOrigPaint;
+    }
+
+    // call this after any possible paint modifiers
+    if (fPaint->nothingToDraw()) {
         fPaint = NULL;
         return false;
     }
-    if (fFilter) {
-        fFilter->filter(paint, drawType);
-        if (NULL == fLooper) {
-            // no looper means we only draw once
-            fDone = true;
-        }
-    }
-    fPaint = paint;
     return true;
 }
 
@@ -829,10 +827,6 @@
 
 void SkCanvas::drawDevice(SkDevice* device, int x, int y,
                           const SkPaint* paint) {
-    if (paint) {
-        CHECK_NOTHING_TO_DRAW(*paint);
-    }
-
     SkPaint tmp;
     if (NULL == paint) {
         tmp.setDither(true);
@@ -1221,8 +1215,6 @@
 }
 
 void SkCanvas::internalDrawPaint(const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     LOOPER_BEGIN(paint, SkDrawFilter::kPaint_Type)
 
     while (iter.next()) {
@@ -1234,7 +1226,6 @@
 
 void SkCanvas::drawPoints(PointMode mode, size_t count, const SkPoint pts[],
                           const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
     if ((long)count <= 0) {
         return;
     }
@@ -1251,8 +1242,6 @@
 }
 
 void SkCanvas::drawRect(const SkRect& r, const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     if (paint.canComputeFastBounds()) {
         SkRect storage;
         if (this->quickReject(paint.computeFastBounds(r, &storage),
@@ -1271,8 +1260,6 @@
 }
 
 void SkCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     if (!path.isInverseFillType() && paint.canComputeFastBounds()) {
         SkRect storage;
         const SkRect& bounds = path.getBounds();
@@ -1301,10 +1288,6 @@
                           const SkPaint* paint) {
     SkDEBUGCODE(bitmap.validate();)
 
-    if (paint) {
-        CHECK_NOTHING_TO_DRAW(*paint);
-    }
-
     if (NULL == paint || (paint->getMaskFilter() == NULL)) {
         SkRect fastBounds;
         fastBounds.set(x, y,
@@ -1370,17 +1353,11 @@
 void SkCanvas::drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
                               const SkRect& dst, const SkPaint* paint) {
     SkDEBUGCODE(bitmap.validate();)
-    if (paint) {
-        CHECK_NOTHING_TO_DRAW(*paint);
-    }
     this->internalDrawBitmapRect(bitmap, src, dst, paint);
 }
 
 void SkCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix,
                                 const SkPaint* paint) {
-    if (paint) {
-        CHECK_NOTHING_TO_DRAW(*paint);
-    }
     SkDEBUGCODE(bitmap.validate();)
     this->internalDrawBitmap(bitmap, NULL, matrix, paint);
 }
@@ -1451,9 +1428,6 @@
 
 void SkCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
                               const SkRect& dst, const SkPaint* paint) {
-    if (paint) {
-        CHECK_NOTHING_TO_DRAW(*paint);
-    }
     SkDEBUGCODE(bitmap.validate();)
 
     // Need a device entry-point, so gpu can use a mesh
@@ -1462,9 +1436,6 @@
 
 void SkCanvas::drawSprite(const SkBitmap& bitmap, int x, int y,
                           const SkPaint* paint) {
-    if (paint) {
-        CHECK_NOTHING_TO_DRAW(*paint);
-    }
     SkDEBUGCODE(bitmap.validate();)
 
     if (reject_bitmap(bitmap)) {
@@ -1580,8 +1551,6 @@
 
 void SkCanvas::drawText(const void* text, size_t byteLength,
                         SkScalar x, SkScalar y, const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     LOOPER_BEGIN(paint, SkDrawFilter::kText_Type)
 
     while (iter.next()) {
@@ -1596,8 +1565,6 @@
 
 void SkCanvas::drawPosText(const void* text, size_t byteLength,
                            const SkPoint pos[], const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     LOOPER_BEGIN(paint, SkDrawFilter::kText_Type)
 
     while (iter.next()) {
@@ -1612,8 +1579,6 @@
 void SkCanvas::drawPosTextH(const void* text, size_t byteLength,
                             const SkScalar xpos[], SkScalar constY,
                             const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     LOOPER_BEGIN(paint, SkDrawFilter::kText_Type)
 
     while (iter.next()) {
@@ -1628,8 +1593,6 @@
 void SkCanvas::drawTextOnPath(const void* text, size_t byteLength,
                               const SkPath& path, const SkMatrix* matrix,
                               const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     LOOPER_BEGIN(paint, SkDrawFilter::kText_Type)
 
     while (iter.next()) {
@@ -1644,8 +1607,6 @@
 void SkCanvas::drawPosTextOnPath(const void* text, size_t byteLength,
                                  const SkPoint pos[], const SkPaint& paint,
                                  const SkPath& path, const SkMatrix* matrix) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     LOOPER_BEGIN(paint, SkDrawFilter::kText_Type)
 
     while (iter.next()) {
@@ -1662,8 +1623,6 @@
                             const SkColor colors[], SkXfermode* xmode,
                             const uint16_t indices[], int indexCount,
                             const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     LOOPER_BEGIN(paint, SkDrawFilter::kPath_Type)
 
     while (iter.next()) {
@@ -1741,8 +1700,6 @@
 
 void SkCanvas::drawCircle(SkScalar cx, SkScalar cy, SkScalar radius,
                           const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     if (radius < 0) {
         radius = 0;
     }
@@ -1765,8 +1722,6 @@
 
 void SkCanvas::drawRoundRect(const SkRect& r, SkScalar rx, SkScalar ry,
                              const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     if (rx > 0 && ry > 0) {
         if (paint.canComputeFastBounds()) {
             SkRect storage;
@@ -1785,8 +1740,6 @@
 }
 
 void SkCanvas::drawOval(const SkRect& oval, const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     if (paint.canComputeFastBounds()) {
         SkRect storage;
         if (this->quickReject(paint.computeFastBounds(oval, &storage),
@@ -1803,8 +1756,6 @@
 void SkCanvas::drawArc(const SkRect& oval, SkScalar startAngle,
                        SkScalar sweepAngle, bool useCenter,
                        const SkPaint& paint) {
-    CHECK_NOTHING_TO_DRAW(paint);
-
     if (SkScalarAbs(sweepAngle) >= SkIntToScalar(360)) {
         this->drawOval(oval, paint);
     } else {
