diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index af8cf9e..257a0bd 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -1841,6 +1841,13 @@
             dst->fIsVolatile = fIsVolatile;
         }
 
+        if (!matrix.isScaleTranslate()) {
+            // If we're rotated/skewed/etc. we can't trust that our convexity stays put.
+            // ... just because convexity is fragle with segments are *nearly* colinear...
+            // See Path_crbug_899689 test, which asserts w/o this check.
+            dst->fConvexity = kUnknown_Convexity;
+        }
+
         if (SkPathPriv::kUnknown_FirstDirection == fFirstDirection) {
             dst->fFirstDirection = SkPathPriv::kUnknown_FirstDirection;
         } else {
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index febfd4f..5e7f218 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -5204,3 +5204,66 @@
     shallowPath.incReserve(0xffffffff);
 }
 
+DEF_TEST(Path_crbug_899689, r) {
+    SkBitmap bitmap;
+    bitmap.allocN32Pixels(24, 24);
+    SkCanvas canvas(bitmap);
+
+    SkPaint paint;
+    paint.setAntiAlias(true);
+    paint.setStyle(SkPaint::kFill_Style);
+
+    // This is monotone in both x and y, but has a tiny concavity
+    SkPath path;
+    path.moveTo(-1,-1);
+    path.lineTo(0, 0);
+    path.lineTo(0, 0.5e-10f);
+    path.lineTo(0.1e-10f, 1.1e-10f);
+    path.lineTo(1.5e-10f, 1.1e-10f);
+    path.lineTo(1.5e-10f, 2.5e-10f);
+    path.lineTo(0.9f, 1);
+    path.lineTo(-1, 1);
+    path.close();
+
+#if 0
+    // If asked, Skia is going to declare it convex
+    if(path.isConvex()) {
+        printf("convex\n");
+    } else {
+        printf("not convex\n");
+    }
+#endif
+
+    SkMatrix m;
+    m.setRotate(-45);
+    m.postScale(10e10f, 10e10f);
+    m.postSkew(-1, 0);
+    m.postTranslate(1, 10);
+    path.transform(m);
+
+#if 0
+    // The convexity flag is going to survive all affine transforms
+    // Even those that will enlarge the concavity and make the path
+    // non-monotone.
+    // As demonstrated here
+    if(path.isConvex()) {
+        printf("convex\n");
+    } else {
+        printf("not convex\n");
+    }
+
+    // This used to print "convex" (and then assert) before the fix.
+#endif
+
+    // We'll use the path as a clip region
+    canvas.clipPath(path);
+
+    // And now we'll just draw a simple triangle.
+    SkPath path2;
+    path2.moveTo(15.5f, 15);
+    path2.lineTo(50.5f, 50);
+    path2.lineTo(-19.5f, 50);
+    path2.close();
+    canvas.drawPath(path2, paint);
+}
+
