From 154bf35eaa562e252bcd33f0c6fab071686628c4 Mon Sep 17 00:00:00 2001 From: mfkl Date: Tue, 3 Mar 2026 16:19:30 +0700 Subject: [PATCH] Fix NativeControlHost not accounting for visual transforms in size calculation (#20785) GetAbsoluteBounds() was using TransformToAABB only for the position but then returning the untransformed Bounds.Size. This caused native controls inside a Viewbox (or any parent with a visual transform) to be sized incorrectly - the native window would appear at the right position but at the wrong (unscaled) size. Use the full transformed rect from TransformToAABB for both position and size. Fixes #13832 Co-authored-by: Julien Lebosquain --- src/Avalonia.Controls/NativeControlHost.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Controls/NativeControlHost.cs b/src/Avalonia.Controls/NativeControlHost.cs index e3aaa22b5c..8328e0fd56 100644 --- a/src/Avalonia.Controls/NativeControlHost.cs +++ b/src/Avalonia.Controls/NativeControlHost.cs @@ -151,8 +151,8 @@ namespace Avalonia.Controls var transformToVisual = _currentRoot.RootVisual != null ? this.TransformToVisual(_currentRoot.RootVisual) : null; if (transformToVisual == null) return null; - var position = new Rect(default, bounds.Size).TransformToAABB(transformToVisual.Value).Position; - return new Rect(position, bounds.Size); + var transformedRect = new Rect(default, bounds.Size).TransformToAABB(transformToVisual.Value); + return transformedRect; } private void EnqueueForMoveResize()