          const uint8_t* rowA = nullptr;
          const uint8_t* rowB = nullptr;
 diff --git a/src/core/SkDraw.cpp b/src/core/SkDraw.cpp
-index 609e40ccae..db9d67b966 100644
+index 99c8bd8284..335d2e97a0 100644
 --- a/src/core/SkDraw.cpp
 +++ b/src/core/SkDraw.cpp
-@@ -959,6 +959,12 @@ void SkDraw::drawPath(const SkPath& origSrcPath, const SkPaint& origPaint,
+@@ -958,6 +958,12 @@ void SkDraw::drawPath(const SkPath& origSrcPath, const SkPaint& origPaint,
      // transform the path into device space
-     pathPtr->transform(*matrix, devPathPtr);
+     pathPtr->transform(matrixProvider->localToDevice(), devPathPtr);
  
 +#if defined(IS_FUZZING)
 +    if (devPathPtr->countPoints() > 1000) {

             SkFixed slope = SkFixedDiv(dy, dx);
             SkFixed startY = SkFDot6ToFixed(y0) + (slope * ((32 - x0) & 63) >> 6);
 
@@ -137,7 +141,11 @@ void SkScan::HairLineRgn(const SkPoint array[], int arrayCount, const SkRegion*
             if (iy0 == iy1) { // too short to draw
                 continue;
             }

     SkPath tmpPath;
 
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index 09c061de51..34b3f0bd63 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -3173,7 +3173,11 @@ void SkPathPriv::CreateDrawArcPath(SkPath* path, const SkRect& oval, SkScalar st
                                    SkScalar sweepAngle, bool useCenter, bool isFillNoPathEffect) {
     SkASSERT(!oval.isEmpty());
     SkASSERT(sweepAngle);
