diff --git a/gm/texdata.cpp b/gm/texdata.cpp
index e7dcf53..316e4d6 100644
--- a/gm/texdata.cpp
+++ b/gm/texdata.cpp
@@ -89,7 +89,9 @@
                 }
                 GrAutoUnref au(texture);
 
-                ctx->setClip(GrRect::MakeWH(2*S, 2*S));
+                GrClip newClip(GrRect::MakeWH(2*S, 2*S));
+                ctx->setClip(newClip);
+
                 ctx->setRenderTarget(target);
 
                 GrPaint paint;
diff --git a/include/gpu/GrClip.h b/include/gpu/GrClip.h
index 3385c74..4fd8ddd 100644
--- a/include/gpu/GrClip.h
+++ b/include/gpu/GrClip.h
@@ -22,21 +22,21 @@
     GrClip();
     GrClip(const GrClip& src);
     /**
-     *  If specified, the conservativeBounds parameter already takes (tx,ty)
-     *  into account.
+     *  The conservativeBounds parameter already takes (tx,ty) into account.
      */
     GrClip(GrClipIterator* iter, GrScalar tx, GrScalar ty,
-           const GrRect* conservativeBounds = NULL);
-    GrClip(const GrIRect& rect);
-    GrClip(const GrRect& rect);
+           const GrRect& conservativeBounds);
+    explicit GrClip(const GrIRect& rect);
+    explicit GrClip(const GrRect& rect);
 
     ~GrClip();
 
     GrClip& operator=(const GrClip& src);
 
-    bool hasConservativeBounds() const { return fConservativeBoundsValid; }
-
-    const GrRect& getConservativeBounds() const { return fConservativeBounds; }
+    const GrRect& getConservativeBounds() const { 
+        GrAssert(fConservativeBoundsValid);
+        return fConservativeBounds; 
+    }
 
     bool requiresAA() const { return fRequiresAA; }
 
@@ -90,7 +90,7 @@
      *  If specified, the bounds parameter already takes (tx,ty) into account.
      */
     void setFromIterator(GrClipIterator* iter, GrScalar tx, GrScalar ty,
-                         const GrRect* conservativeBounds = NULL);
+                         const GrRect& conservativeBounds);
     void setFromRect(const GrRect& rect);
     void setFromIRect(const GrIRect& rect);
 
diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp
index 1731db5..036f5e1 100644
--- a/src/gpu/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/GrAAHairLinePathRenderer.cpp
@@ -513,13 +513,8 @@
     int rtHeight = drawState.getRenderTarget()->height();
 
     GrIRect clip;
-    if (target->getClip().hasConservativeBounds()) {
-        GrRect clipRect =  target->getClip().getConservativeBounds();
-        clipRect.roundOut(&clip);
-    } else {
-        clip.setLargest();
-    }
 
+    target->getClip().getConservativeBounds().roundOut(&clip);
 
     GrVertexLayout layout = GrDrawTarget::kEdge_VertexLayoutBit;
     GrMatrix viewM = drawState.getViewMatrix();
diff --git a/src/gpu/GrClip.cpp b/src/gpu/GrClip.cpp
index a5120d4..7803edc 100644
--- a/src/gpu/GrClip.cpp
+++ b/src/gpu/GrClip.cpp
@@ -29,7 +29,7 @@
 }
 
 GrClip::GrClip(GrClipIterator* iter, GrScalar tx, GrScalar ty,
-               const GrRect* bounds) {
+               const GrRect& bounds) {
     this->setFromIterator(iter, tx, ty, bounds);
 }
 
@@ -89,7 +89,7 @@
 }
 
 void GrClip::setFromIterator(GrClipIterator* iter, GrScalar tx, GrScalar ty,
-                             const GrRect* conservativeBounds) {
+                             const GrRect& conservativeBounds) {
     fList.reset();
     fRequiresAA = false;
 
@@ -148,8 +148,8 @@
     if (isectRectValid && rectCount) {
         fConservativeBounds = fList[0].fRect;
         fConservativeBoundsValid = true;
-    } else if (NULL != conservativeBounds) {
-        fConservativeBounds = *conservativeBounds;
+    } else {
+        fConservativeBounds = conservativeBounds;
         fConservativeBoundsValid = true;
     }
 }
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp
index dcd32dd..7c54009 100644
--- a/src/gpu/GrClipMaskManager.cpp
+++ b/src/gpu/GrClipMaskManager.cpp
@@ -114,17 +114,13 @@
     GrIRect bounds;
     GrIRect rtRect;
     rtRect.setLTRB(0, 0, rt->width(), rt->height());
-    if (clipIn.hasConservativeBounds()) {
-        GrRect softBounds = clipIn.getConservativeBounds();
-        softBounds.roundOut(&bounds);
-        if (!bounds.intersect(rtRect)) {
-            bounds.setEmpty();
-        }
-        if (bounds.isEmpty()) {
-            return false;
-        }
-    } else {
-        bounds = rtRect;
+
+    clipIn.getConservativeBounds().roundOut(&bounds);
+    if (!bounds.intersect(rtRect)) {
+        bounds.setEmpty();
+    }
+    if (bounds.isEmpty()) {
+        return false;
     }
 
 #if GR_SW_CLIP
@@ -503,18 +499,11 @@
 
     // unlike the stencil path the alpha path is not bound to the size of the
     // render target - determine the minimum size required for the mask
-    GrRect bounds;
-
-    if (clipIn.hasConservativeBounds()) {
-        bounds = clipIn.getConservativeBounds();
-        if (!bounds.intersect(rtRect)) {
-            // the mask will be empty in this case
-            GrAssert(false);
-            bounds.setEmpty();
-        }
-    } else {
-        // still locked to the size of the render target
-        bounds = rtRect;
+    GrRect bounds = clipIn.getConservativeBounds();
+    if (!bounds.intersect(rtRect)) {
+        // the mask will be empty in this case
+        GrAssert(false);
+        bounds.setEmpty();
     }
 
     GrIRect intBounds;
diff --git a/src/gpu/GrContext.cpp b/src/gpu/GrContext.cpp
index b004f28..6e92bf7 100644
--- a/src/gpu/GrContext.cpp
+++ b/src/gpu/GrContext.cpp
@@ -1836,7 +1836,9 @@
     srcRect.roundOut();
     scale_rect(&srcRect, static_cast<float>(scaleFactorX), 
                          static_cast<float>(scaleFactorY));
-    this->setClip(srcRect);
+
+    GrClip newClip(srcRect);
+    this->setClip(newClip);
 
     GrAssert(kBGRA_8888_PM_GrPixelConfig == srcTexture->config() ||
              kRGBA_8888_PM_GrPixelConfig == srcTexture->config() ||
@@ -1949,8 +1951,11 @@
     GrRenderTarget* oldRenderTarget = this->getRenderTarget();
     GrAutoMatrix avm(this, GrMatrix::I());
     GrClip oldClip = this->getClip();
-    this->setClip(GrRect::MakeWH(SkIntToScalar(srcTexture->width()), 
-                                 SkIntToScalar(srcTexture->height())));
+
+    GrClip newClip(GrRect::MakeWH(SkIntToScalar(srcTexture->width()), 
+                                  SkIntToScalar(srcTexture->height())));
+    this->setClip(newClip);
+
     if (radius.fWidth > 0) {
         this->setRenderTarget(temp1->asRenderTarget());
         apply_morphology(fGpu, srcTexture, rect, radius.fWidth, morphType,
diff --git a/src/gpu/GrSoftwarePathRenderer.cpp b/src/gpu/GrSoftwarePathRenderer.cpp
index bccfc47..5ab5fb4 100644
--- a/src/gpu/GrSoftwarePathRenderer.cpp
+++ b/src/gpu/GrSoftwarePathRenderer.cpp
@@ -46,15 +46,12 @@
     }
     *pathBounds = GrIRect::MakeWH(rt->width(), rt->height());
     const GrClip& clip = target->getClip();
-    if (clip.hasConservativeBounds()) {
-        clip.getConservativeBounds().roundOut(clipBounds);
-        if (!pathBounds->intersect(*clipBounds)) {
-            return false;
-        }
-    } else {
-        // pathBounds is currently the rt extent, set clip bounds to that rect.
-        *clipBounds = *pathBounds;
+
+    clip.getConservativeBounds().roundOut(clipBounds);
+    if (!pathBounds->intersect(*clipBounds)) {
+        return false;
     }
+
     if (!path.getBounds().isEmpty()) {
         GrRect pathSBounds;
         matrix.mapRect(&pathSBounds, path.getBounds());
diff --git a/src/gpu/GrTextContext.cpp b/src/gpu/GrTextContext.cpp
index 5b61be2..dc04fcd 100644
--- a/src/gpu/GrTextContext.cpp
+++ b/src/gpu/GrTextContext.cpp
@@ -90,19 +90,16 @@
     } else {
         fExtMatrix.reset();
     }
-    if (context->getClip().hasConservativeBounds()) {
-        if (!fExtMatrix.isIdentity()) {
-            GrMatrix inverse;
-            GrRect r = context->getClip().getConservativeBounds();
-            if (fExtMatrix.invert(&inverse)) {
-                inverse.mapRect(&r);
-                r.roundOut(&fClipRect);
-            }
-        } else {
-            context->getClip().getConservativeBounds().roundOut(&fClipRect);
+
+    if (!fExtMatrix.isIdentity()) {
+        GrMatrix inverse;
+        GrRect r = context->getClip().getConservativeBounds();
+        if (fExtMatrix.invert(&inverse)) {
+            inverse.mapRect(&r);
+            r.roundOut(&fClipRect);
         }
     } else {
-        fClipRect.setLargest();
+        context->getClip().getConservativeBounds().roundOut(&fClipRect);
     }
 
     // save the context's original matrix off and restore in destructor
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index e5227a2..ba8be8c 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -353,7 +353,7 @@
                    GrIntToScalar(skBounds.fRight),
                    GrIntToScalar(skBounds.fBottom));
     GrClip grc(&iter, GrIntToScalar(-origin.x()), GrIntToScalar(-origin.y()),
-               &bounds);
+               bounds);
     context->setClip(grc);
 }
 
@@ -814,7 +814,10 @@
     // an AutoClipRestore.
     GrClip oldClip = context->getClip();
     context->setRenderTarget(pathTexture->asRenderTarget());
-    context->setClip(srcRect);
+
+    GrClip newClip(srcRect);
+    context->setClip(newClip);
+
     context->clear(NULL, 0);
     GrPaint tempPaint;
     tempPaint.reset();
diff --git a/src/gpu/gl/GrGpuGL_program.cpp b/src/gpu/gl/GrGpuGL_program.cpp
index 736be93..3a3d638 100644
--- a/src/gpu/gl/GrGpuGL_program.cpp
+++ b/src/gpu/gl/GrGpuGL_program.cpp
@@ -493,8 +493,7 @@
 
     GrIRect* rect = NULL;
     GrIRect clipBounds;
-    if (drawState.isClipState() &&
-        fClip.hasConservativeBounds()) {
+    if (drawState.isClipState()) {
         fClip.getConservativeBounds().roundOut(&clipBounds);
         rect = &clipBounds;
     }
