diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.Effects.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.Effects.cs index 7621e8436c..b661ad467d 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.Effects.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.Effects.cs @@ -23,7 +23,7 @@ partial class DrawingContextImpl public void PopEffect() { CheckLease(); - Canvas.Restore(); + RestoreCanvas(); } SKImageFilter? CreateEffect(IEffect effect) diff --git a/tests/Avalonia.RenderTests/Media/EffectTests.cs b/tests/Avalonia.RenderTests/Media/EffectTests.cs index 9a83b397f4..c8b931dae8 100644 --- a/tests/Avalonia.RenderTests/Media/EffectTests.cs +++ b/tests/Avalonia.RenderTests/Media/EffectTests.cs @@ -1,5 +1,6 @@ using System.Threading.Tasks; using Avalonia.Controls; +using Avalonia.Controls.Shapes; using Avalonia.Media; using Xunit; #pragma warning disable CS0649 @@ -38,6 +39,43 @@ public class EffectTests : TestBase await RenderToFile(target); CompareImages(skipImmediate: true); } + + [Fact] + public async Task EffectFollowedByNonEffect() + { + var target = new Border + { + Background = Brushes.White, + Width = 200, + Height = 200, + Child = new Panel + { + Margin = new Thickness(25), + Children = + { + new Rectangle + { + Fill = Brushes.Yellow, + Effect = new DropShadowEffect + { + Opacity = 1, + OffsetX = 0, + OffsetY = 0, + Color = Colors.Black, + BlurRadius = 50 + } + }, + new Rectangle + { + Fill = new SolidColorBrush(0x7F007FFF) + } + } + } + }; + + await RenderToFile(target); + CompareImages(skipImmediate: true); + } } -#endif \ No newline at end of file +#endif diff --git a/tests/TestFiles/Skia/Media/Effects/EffectFollowedByNonEffect.expected.png b/tests/TestFiles/Skia/Media/Effects/EffectFollowedByNonEffect.expected.png new file mode 100644 index 0000000000..e0f57cecf6 Binary files /dev/null and b/tests/TestFiles/Skia/Media/Effects/EffectFollowedByNonEffect.expected.png differ