diff --git a/src/Avalonia.Controls/Control.cs b/src/Avalonia.Controls/Control.cs
index 8c6ac0718a..8bb0774655 100644
--- a/src/Avalonia.Controls/Control.cs
+++ b/src/Avalonia.Controls/Control.cs
@@ -200,7 +200,6 @@ namespace Avalonia.Controls
{
base.OnAttachedToVisualTreeCore(e);
- InvalidateFlowDirection();
InitializeIfNeeded();
}
@@ -210,6 +209,14 @@ namespace Avalonia.Controls
base.OnDetachedFromVisualTreeCore(e);
}
+ ///
+ protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
+ {
+ base.OnAttachedToVisualTree(e);
+
+ InvalidateFlowDirection();
+ }
+
///
protected override void OnGotFocus(GotFocusEventArgs e)
{
diff --git a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
index 23016de148..d92919884b 100644
--- a/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
+++ b/src/Avalonia.Visuals/Rendering/ImmediateRenderer.cs
@@ -285,6 +285,12 @@ namespace Avalonia.Rendering
renderTransform = (-offset) * visual.RenderTransform.Value * (offset);
}
+ if (visual.IsMirrorTransform)
+ {
+ var mirrorMatrix = new Matrix(-1.0, 0.0, 0.0, 1.0, visual.Bounds.Width, 0);
+ renderTransform *= mirrorMatrix;
+ }
+
m = renderTransform * m;
if (clipToBounds)