// Get upper-left and lower-right positions of the viewport in world coords Transform2D InvCanvasTransform = GetTree().Root.CanvasTransform.AffineInverse(); Rect2 viewportRect = GetViewport().GetVisibleRect(); Vector2 upperLeft = InvCanvasTransform * Vector2.Zero; Vector2 lowerRight = InvCanvasTransform * viewportRect.Size; // The clamped position is an easy way to check if the target is off-screen. Vector2 ClampedTargetPosition = Target.Position.Clamp(upperLeft,lowerRight);