         
         for touch in touches {
             let location = touch.location(in: self)
-            let inverted = renderer.node().place.invert()!
-            let loc = location.applying(RenderUtils.mapTransform(inverted))
             
             touchesMap[touch]?.forEach { node in
+                
+                let inverted = node.place.invert()!
+                let loc = location.applying(RenderUtils.mapTransform(inverted))
                 var id = unsafeBitCast(Unmanaged.passUnretained(touch).toOpaque(), to: Int.self)
                 let point = TouchPoint(id: id, location: Point(x: Double(loc.x), y: Double(loc.y)))
                 let touchEvent = TouchEvent(node: node, points: [point])

            var points = [TouchPoint]()
            for touch in touches {
                let location = touch.location(in: self)
                let loc = location.applying(RenderUtils.mapTransform(inverted))
                let id = unsafeBitCast(Unmanaged.passUnretained(touch).toOpaque(), to: Int.self)
                let point = TouchPoint(id: id, location: Point(x: Double(loc.x), y: Double(loc.y)))

            }
        }
        
        
        foundNodes.forEach { node in
            let inverted = node.place.invert()!
            let loc = location.applying(RenderUtils.mapTransform(inverted))
            let event = TapEvent(node: node, location: Point(x: Double(loc.x), y: Double(loc.y)))
            node.handleTap(event)
        }
