diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp
index 3aa7a54..2af1814 100644
--- a/src/gpu/GrDrawTarget.cpp
+++ b/src/gpu/GrDrawTarget.cpp
@@ -219,9 +219,14 @@
     if (!fClipMaskManager->setupClipping(pipelineBuilder, &ars, &batch->bounds(), &clip)) {
         return;
     }
+    GrPipelineBuilder::AutoRestoreFragmentProcessorState arfps;
+    if (clip.clipCoverageFragmentProcessor()) {
+        arfps.set(&pipelineBuilder);
+        arfps.addCoverageFragmentProcessor(clip.clipCoverageFragmentProcessor());
+    }
 
     GrPipeline::CreateArgs args;
-    if (!this->installPipelineInDrawBatch(&pipelineBuilder, &clip, batch)) {
+    if (!this->installPipelineInDrawBatch(&pipelineBuilder, &clip.scissorState(), batch)) {
         return;
     }
 
@@ -344,6 +349,12 @@
         return;
     }
 
+    GrPipelineBuilder::AutoRestoreFragmentProcessorState arfps;
+    if (clip.clipCoverageFragmentProcessor()) {
+        arfps.set(&pipelineBuilder);
+        arfps.addCoverageFragmentProcessor(clip.clipCoverageFragmentProcessor());
+    }
+
     // Ensure the render target has a stencil buffer and get the stencil settings.
     GrStencilSettings stencilSettings;
     GrRenderTarget* rt = pipelineBuilder.getRenderTarget();
@@ -352,7 +363,7 @@
     batch->setStencilSettings(stencilSettings);
 
     GrPipeline::CreateArgs args;
-    if (!this->installPipelineInDrawBatch(&pipelineBuilder, &clip, batch)) {
+    if (!this->installPipelineInDrawBatch(&pipelineBuilder, &clip.scissorState(), batch)) {
         return;
     }
 
@@ -528,19 +539,14 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 bool GrDrawTarget::installPipelineInDrawBatch(const GrPipelineBuilder* pipelineBuilder,
-                                              const GrAppliedClip* clip, GrDrawBatch* batch) {
-    GrPipelineBuilder::AutoRestoreFragmentProcessorState arfps;
-    if (clip->clipCoverageFragmentProcessor()) {
-        arfps.set(pipelineBuilder);
-        arfps.addCoverageFragmentProcessor(clip->clipCoverageFragmentProcessor());
-    }
-
+                                              const GrScissorState* scissor,
+                                              GrDrawBatch* batch) {
     GrPipeline::CreateArgs args;
     args.fPipelineBuilder = pipelineBuilder;
     args.fCaps = this->caps();
+    args.fScissor = scissor;
     args.fColorPOI = pipelineBuilder->colorProcInfo(batch);
     args.fCoveragePOI = pipelineBuilder->coverageProcInfo(batch);
-    args.fClip = clip;
     if (!this->setupDstReadIfNecessary(*pipelineBuilder, args.fColorPOI,
                                        args.fCoveragePOI, &args.fDstTexture,
                                        batch->bounds())) {
