anchor.diff:      _transformMatrixBoxToNode.invert();
   
       return _transformMatrixBoxToNode;
  +  }
  +
  +  Matrix4 _inverseMatrix() {
  +    if (_transformMatrixInverse == null) {
  +      _transformMatrixInverse = new Matrix4.copy(transformMatrix);
  +      _transformMatrixInverse.invert();
  +    }
  +    return _transformMatrixInverse;
     }
   
     /// Converts a point from the coordinate system of the [SpriteBox] to the local coordinate system of the node.
  
positive.code:   /// changes that affects the matrix.
    void invalidateTransformMatrix() {
      _transformMatrix = null;
      _invalidateToBoxTransformMatrix();
    }
  
  
negative.code:       return position;
      } else if (physicsParent is PhysicsGroup) {
        // Transform the position
        Vector4 parentPos = physicsParent._inverseMatrix().transform(new Vector4(position.x, position.y, 0.0, 1.0));
        Point newPos = new Point(parentPos.x, parentPos.y);
        return _positionToPhysics(newPos, physicsParent.parent);
      } else {
  