diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 5724050..5c0eaf0 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -709,15 +709,28 @@
             , fFinalized(0)
             , fAllowSRGBInputs(allowSRGBInputs ? 1 : 0) {
         SkASSERT(aaType != GrAAType::kMixedSamples);
-
-        const Draw& draw = fDraws.emplace_back(srcRect, 0, GrPerspQuad(dstRect, viewMatrix),
-                                               constraint, color);
         fPerspective = viewMatrix.hasPerspective();
-        fDomain = (bool)draw.domain();
-        SkRect bounds;
-        bounds = draw.quad().bounds();
+        auto quad = GrPerspQuad(dstRect, viewMatrix);
+        auto bounds = quad.bounds();
+#ifndef SK_DONT_DROP_UNNECESSARY_AA_IN_TEXTURE_OP
+        if (GrAAType::kCoverage == this->aaType() && viewMatrix.rectStaysRect()) {
+            // Disable coverage AA when rect falls on integers in device space.
+            auto is_int = [](float f) { return f == sk_float_floor(f); };
+            if (is_int(bounds.fLeft) && is_int(bounds.fTop) && is_int(bounds.fRight) &&
+                is_int(bounds.fBottom)) {
+                fAAType = static_cast<unsigned>(GrAAType::kNone);
+                // We may have had a strict constraint with nearest filter soley due to possible AA
+                // bloat. In that case it's no longer necessary.
+                if (constraint == SkCanvas::kStrict_SrcRectConstraint &&
+                    filter == GrSamplerState::Filter::kNearest) {
+                    constraint = SkCanvas::kFast_SrcRectConstraint;
+                }
+            }
+        }
+#endif
+        const auto& draw = fDraws.emplace_back(srcRect, 0, quad, constraint, color);
         this->setBounds(bounds, HasAABloat::kNo, IsZeroArea::kNo);
-
+        fDomain = static_cast<bool>(draw.domain());
         fMaxApproxDstPixelArea = RectSizeAsSizeT(bounds);
     }
 
