diff --git a/gm/aarecteffect.cpp b/gm/aarecteffect.cpp
index e112b7a..298926f 100644
--- a/gm/aarecteffect.cpp
+++ b/gm/aarecteffect.cpp
@@ -23,6 +23,7 @@
 #include "src/gpu/GrPaint.h"
 #include "src/gpu/GrSurfaceDrawContext.h"
 #include "src/gpu/effects/generated/GrAARectEffect.h"
+#include "tools/gpu/TestOps.h"
 
 #include <memory>
 #include <utility>
@@ -76,8 +77,13 @@
                 auto fp = GrAARectEffect::Make(/*inputFP=*/nullptr, edgeType, rect);
                 SkASSERT(fp);
 
-                auto drawRect = rect.makeOutset(kOutset, kOutset).roundOut();
-                surfaceDrawContext->fillRectWithFP(drawRect, std::move(fp));
+                GrPaint grPaint;
+                grPaint.setColor4f({ 0, 0, 0, 1.f });
+                grPaint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
+                grPaint.setCoverageFragmentProcessor(std::move(fp));
+                auto drawRect = rect.makeOutset(kOutset, kOutset);
+                auto op = sk_gpu_test::test_ops::MakeRect(context, std::move(grPaint), drawRect);
+                surfaceDrawContext->addDrawOp(std::move(op));
 
                 x += SkScalarCeilToScalar(rect.width() + kDX);
             }
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 59c6870..d665da8 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -25,6 +25,7 @@
 #include "src/gpu/GrPaint.h"
 #include "src/gpu/GrSurfaceDrawContext.h"
 #include "src/gpu/effects/GrConvexPolyEffect.h"
+#include "tools/gpu/TestOps.h"
 
 #include <memory>
 #include <utility>
@@ -111,8 +112,13 @@
                     continue;
                 }
 
-                auto rect = p.getBounds().makeOutset(kOutset, kOutset).roundOut();
-                surfaceDrawContext->fillRectWithFP(rect, std::move(fp));
+                GrPaint grPaint;
+                grPaint.setColor4f({ 0, 0, 0, 1.f });
+                grPaint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
+                grPaint.setCoverageFragmentProcessor(std::move(fp));
+                auto rect = p.getBounds().makeOutset(kOutset, kOutset);
+                auto op = sk_gpu_test::test_ops::MakeRect(context, std::move(grPaint), rect);
+                surfaceDrawContext->addDrawOp(std::move(op));
 
                 x += SkScalarCeilToScalar(path->getBounds().width() + kDX);
             }
