diff --git a/src/core/SkAnalyticEdge.cpp b/src/core/SkAnalyticEdge.cpp index e426d7d21b..44d73e6f94 100644 --- a/src/core/SkAnalyticEdge.cpp +++ b/src/core/SkAnalyticEdge.cpp @@ -114,6 +114,10 @@ bool SkAnalyticQuadraticEdge::updateQuadratic() { if (SkAbs32(dy >> shift) >= SK_Fixed1 * 2) { // only snap when dy is large enough newSnappedY = SkTMin(fQEdge.fQLastY, SkFixedRoundToFixed(newy)); newSnappedX = newx - SkFixedMul(slope, newy - newSnappedY); + #ifdef SK_ANALYTIC_AA_GUARD + // Note that SkFixedMul use (>> 16) so we'll have different answers + newSnappedX = newx + SkFixedMul(slope, newSnappedY - newy); + #endif } else { newSnappedY = SkTMin(fQEdge.fQLastY, snapY(newy)); newSnappedX = newx;