diff --git a/src/path/Curve.js b/src/path/Curve.js
index a6cf2e90..63de4dce 100644
--- a/src/path/Curve.js
+++ b/src/path/Curve.js
@@ -635,43 +635,39 @@ statics: /** @lends Curve */{
      *     only containing its values are returned.
      */
     getMonoCurves: function(v, dir) {
-        var curves = [];
-        // #getLength() is a rather expensive operation, therefore we test two
-        // cheap preconditions first.
-        if (v[0] !== v[6] || v[1] === v[7] || Curve.getLength(v) !== 0) {
+        var curves = [],
             // Determine the ordinate index in the curve values array.
-            var io = dir ? 0 : 1,
-                o0 = v[io],
-                o1 = v[io + 2],
-                o2 = v[io + 4],
-                o3 = v[io + 6];
-            if ((o0 >= o1) === (o1 >= o2) && (o1 >= o2) === (o2 >= o3)
-                    || Curve.isStraight(v)) {
-                // Straight curves and curves with all involved points ordered
-                // in coordinate direction are guaranteed to be monotone.
+            io = dir ? 0 : 1,
+            o0 = v[io],
+            o1 = v[io + 2],
+            o2 = v[io + 4],
+            o3 = v[io + 6];
+        if ((o0 >= o1) === (o1 >= o2) && (o1 >= o2) === (o2 >= o3)
+                || Curve.isStraight(v)) {
+            // Straight curves and curves with all involved points ordered
+            // in coordinate direction are guaranteed to be monotone.
+            curves.push(v);
+        } else {
+            var a = 3 * (o1 - o2) - o0 + o3,
+                b = 2 * (o0 + o2) - 4 * o1,
+                c = o1 - o0,
+                tMin = 4e-7,
+                tMax = 1 - tMin,
+                roots = [],
+                n = Numerical.solveQuadratic(a, b, c, roots, tMin, tMax);
+            if (n === 0) {
                 curves.push(v);
             } else {
-                var a = 3 * (o1 - o2) - o0 + o3,
-                    b = 2 * (o0 + o2) - 4 * o1,
-                    c = o1 - o0,
-                    tMin = 4e-7,
-                    tMax = 1 - tMin,
-                    roots = [],
-                    n = Numerical.solveQuadratic(a, b, c, roots, tMin, tMax);
-                if (n === 0) {
-                    curves.push(v);
-                } else {
-                    roots.sort();
-                    var t = roots[0],
-                        parts = Curve.subdivide(v, t);
+                roots.sort();
+                var t = roots[0],
+                    parts = Curve.subdivide(v, t);
+                curves.push(parts[0]);
+                if (n > 1) {
+                    t = (roots[1] - t) / (1 - t);
+                    parts = Curve.subdivide(parts[1], t);
                     curves.push(parts[0]);
-                    if (n > 1) {
-                        t = (roots[1] - t) / (1 - t);
-                        parts = Curve.subdivide(parts[1], t);
-                        curves.push(parts[0]);
-                    }
-                    curves.push(parts[1]);
                 }
+                curves.push(parts[1]);
             }
         }
         return curves;