diff --git a/engine/Sandbox.Engine/Systems/UI/Render/PanelRenderer.Matrix.cs b/engine/Sandbox.Engine/Systems/UI/Render/PanelRenderer.Matrix.cs index f132b8834..cb61341cb 100644 --- a/engine/Sandbox.Engine/Systems/UI/Render/PanelRenderer.Matrix.cs +++ b/engine/Sandbox.Engine/Systems/UI/Render/PanelRenderer.Matrix.cs @@ -41,9 +41,12 @@ private bool PushMatrix( Panel panel ) origin.x += style.TransformOriginX.Value.GetPixels( panel.Box.Rect.Width, 0.0f ); origin.y += style.TransformOriginY.Value.GetPixels( panel.Box.Rect.Height, 0.0f ); - Matrix *= Matrix.CreateTranslation( -origin ); + // Transform origin from parent's untransformed space to parent's transformed space + Vector3 transformedOrigin = panel.Parent?.GlobalMatrix?.Inverted.Transform( origin ) ?? origin; + + Matrix *= Matrix.CreateTranslation( -transformedOrigin ); Matrix *= panel.TransformMatrix; - Matrix *= Matrix.CreateTranslation( origin ); + Matrix *= Matrix.CreateTranslation( transformedOrigin ); var mi = Matrix.Inverted;