diff --git a/gpu/src/GrContext.cpp b/gpu/src/GrContext.cpp
index ef5ad11..b829323 100644
--- a/gpu/src/GrContext.cpp
+++ b/gpu/src/GrContext.cpp
@@ -1736,5 +1736,6 @@
     fGpu->setSamplerState(0, sampler);
     fGpu->setViewMatrix(GrMatrix::I());
     fGpu->setTexture(0, texture);
+    fGpu->setBlendFunc(kOne_BlendCoeff, kZero_BlendCoeff);
     fGpu->drawSimpleRect(rect, NULL, 1 << 0);
 }
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index c4e0ebe..45dac33 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -913,9 +913,7 @@
     GrClip oldClip = context->getClip();
     context->setRenderTarget(dstTexture->asRenderTarget());
     context->setClip(srcRect);
-    // FIXME:  could just clear bounds
     context->clear(NULL, 0);
-    GrMatrix transM;
     GrPaint tempPaint;
     tempPaint.reset();
 
@@ -959,9 +957,6 @@
         context->setRenderTarget(dstTexture->asRenderTarget());
         SkRect dstRect(srcRect);
         scaleRect(&dstRect, 0.5f);
-        // Clear out 1 pixel border for linear filtering.
-        // FIXME:  for now, clear everything
-        context->clear(NULL, 0);
         paint.setTexture(0, srcTexture);
         context->drawRectToRect(paint, dstRect, srcRect);
         srcRect = dstRect;
@@ -972,25 +967,41 @@
     float* kernel = kernelStorage.get();
     buildKernel(sigma, kernel, kernelWidth);
 
+    // Clear out a halfWidth to the right of the srcRect to prevent the
+    // X convolution from reading garbage.
+    SkIRect clearRect = SkIRect::MakeXYWH(
+        srcRect.fRight, srcRect.fTop, halfWidth, srcRect.height());
+    context->clear(&clearRect, 0x0);
+
     context->setRenderTarget(dstTexture->asRenderTarget());
-    context->clear(NULL, 0);
     context->convolveInX(srcTexture, srcRect, kernel, kernelWidth);
     SkTSwap(srcTexture, dstTexture);
 
+    // Clear out a halfWidth below the srcRect to prevent the Y
+    // convolution from reading garbage.
+    clearRect = SkIRect::MakeXYWH(
+        srcRect.fLeft, srcRect.fBottom, srcRect.width(), halfWidth);
+    context->clear(&clearRect, 0x0);
+
     context->setRenderTarget(dstTexture->asRenderTarget());
-    context->clear(NULL, 0);
     context->convolveInY(srcTexture, srcRect, kernel, kernelWidth);
     SkTSwap(srcTexture, dstTexture);
 
+    // Clear one pixel to the right and below, to accommodate bilinear
+    // upsampling.
+    clearRect = SkIRect::MakeXYWH(
+        srcRect.fLeft, srcRect.fBottom, srcRect.width() + 1, 1);
+    context->clear(&clearRect, 0x0);
+    clearRect = SkIRect::MakeXYWH(
+        srcRect.fRight, srcRect.fTop, 1, srcRect.height());
+    context->clear(&clearRect, 0x0);
+
     if (scaleFactor > 1) {
         // FIXME:  This should be mitchell, not bilinear.
         paint.getTextureSampler(0)->setFilter(GrSamplerState::kBilinear_Filter);
         sampleM.setIDiv(srcTexture->width(), srcTexture->height());
         paint.getTextureSampler(0)->setMatrix(sampleM);
         context->setRenderTarget(dstTexture->asRenderTarget());
-        // Clear out 2 pixel border for bicubic filtering.
-        // FIXME:  for now, clear everything
-        context->clear(NULL, 0);
         paint.setTexture(0, srcTexture);
         SkRect dstRect(srcRect);
         scaleRect(&dstRect, scaleFactor);
