diff --git a/src/Avalonia.Base/Input/PointerEventArgs.cs b/src/Avalonia.Base/Input/PointerEventArgs.cs index 0556d8702f..a53791e414 100644 --- a/src/Avalonia.Base/Input/PointerEventArgs.cs +++ b/src/Avalonia.Base/Input/PointerEventArgs.cs @@ -70,16 +70,14 @@ namespace Avalonia.Input if (relativeTo == null) return pt; - if (!ReferenceEquals(_rootVisual, relativeTo.VisualRoot)) + if (!ReferenceEquals(_rootVisual, relativeTo.VisualRoot) && relativeTo.VisualRoot is Visual v) { var screenPt = _rootVisual.PointToScreen(pt); - return relativeTo.PointToClient(screenPt); - } - else - { - return pt * _rootVisual.TransformToVisual(relativeTo) ?? default; + return relativeTo.PointToClient(screenPt) * v.TransformToVisual(relativeTo) ?? default; } + + return pt * _rootVisual.TransformToVisual(relativeTo) ?? default; } ///