 
 extension ShapeRegion {
     
-    public init(_ path: Shape, winding: Shape.WindingRule) {
+    public init(_ shape: Shape, winding: Shape.WindingRule) {
+        
+        if shape.transform.determinant.almostZero() {
+            self.init()
+            return
+        }
         
         let cacheKey: String
         

            
            region *= _path.transform.inverse
            
            path.cache.store(value: region, for: cacheKey)
            
            region *= path.transform
            self = region
            
            path.identity.cache.store(value: region, for: cacheKey)
        }
    }
    

        case .evenOdd: cacheKey = ShapeCacheEvenOddRegionKey
        }
        
        if let region: ShapeRegion = shape.identity.cache.load(for: cacheKey) {
            
            self = region
            
        } else if var region: ShapeRegion = shape.cache.load(for: cacheKey) {
            
            region *= shape.transform
            self = region
            
            shape.identity.cache.store(value: region, for: cacheKey)
            
        } else {
            
            var region = ShapeRegion()
            
            var _path = shape
            _path.transform = .identity
            
            let bound = _path.boundary
