diff --git a/src/Avalonia.Controls/LayoutTransformControl.cs b/src/Avalonia.Controls/LayoutTransformControl.cs
index 06069a897e..5f8d4a561d 100644
--- a/src/Avalonia.Controls/LayoutTransformControl.cs
+++ b/src/Avalonia.Controls/LayoutTransformControl.cs
@@ -215,7 +215,7 @@ namespace Avalonia.Controls
///
/// Transformation matrix corresponding to _matrixTransform.
///
- private Matrix _transformation;
+ private Matrix _transformation = Matrix.Identity;
private IDisposable? _transformChangedEvent;
///
@@ -256,13 +256,16 @@ namespace Avalonia.Controls
///
private void ApplyLayoutTransform()
{
- if (LayoutTransform == null)
- return;
-
// Get the transform matrix and apply it
- _transformation = RoundMatrix(LayoutTransform.Value, DecimalsAfterRound);
+ var matrix = LayoutTransform is null ?
+ Matrix.Identity :
+ RoundMatrix(LayoutTransform.Value, DecimalsAfterRound);
+
+ if (_transformation == matrix)
+ return;
- _matrixTransform.Matrix = _transformation;
+ _transformation = matrix;
+ _matrixTransform.Matrix = matrix;
// New transform means re-layout is necessary
InvalidateMeasure();
diff --git a/tests/Avalonia.Controls.UnitTests/LayoutTransformControlTests.cs b/tests/Avalonia.Controls.UnitTests/LayoutTransformControlTests.cs
index 60139c2881..c8a5af05a4 100644
--- a/tests/Avalonia.Controls.UnitTests/LayoutTransformControlTests.cs
+++ b/tests/Avalonia.Controls.UnitTests/LayoutTransformControlTests.cs
@@ -169,6 +169,25 @@ namespace Avalonia.Controls.UnitTests
new Rect(0, 100, 100, 25));
}
+ [Fact]
+ public void Bounds_On_Transform_Applied_Then_Removed_Are_Correct()
+ {
+ using var app = UnitTestApplication.Start(TestServices.MockPlatformRenderInterface);
+
+ var control = CreateWithChildAndMeasureAndTransform(
+ 100,
+ 25,
+ new RotateTransform { Angle = 90 });
+
+ Assert.Equal(new Size(25, 100), control.DesiredSize);
+
+ control.LayoutTransform = null;
+ control.Measure(Size.Infinity);
+ control.Arrange(new Rect(control.DesiredSize));
+
+ Assert.Equal(new Size(100, 25), control.DesiredSize);
+ }
+
[Fact]
public void Should_Generate_RotateTransform_90_degrees()
{