diff --git a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems
index 79ceddf3bb..0d54c021ca 100644
--- a/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems
+++ b/tests/Avalonia.RenderTests/Avalonia.RenderTests.projitems
@@ -9,6 +9,8 @@
Avalonia.RenderTests
+
+
@@ -22,6 +24,5 @@
-
\ No newline at end of file
diff --git a/tests/Avalonia.RenderTests/OpacityMaskTests.cs b/tests/Avalonia.RenderTests/OpacityMaskTests.cs
new file mode 100644
index 0000000000..7d9b6d7fa8
--- /dev/null
+++ b/tests/Avalonia.RenderTests/OpacityMaskTests.cs
@@ -0,0 +1,64 @@
+using Avalonia.Controls;
+using Avalonia.Controls.Shapes;
+using Avalonia.Media;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Xunit;
+
+#if AVALONIA_CAIRO
+namespace Avalonia.Cairo.RenderTests
+#elif AVALONIA_SKIA
+namespace Avalonia.Skia.RenderTests
+#else
+namespace Avalonia.Direct2D1.RenderTests
+#endif
+{
+ public class OpacityMaskTests : TestBase
+ {
+ public OpacityMaskTests()
+ : base("OpacityMask")
+ {
+ }
+
+#if AVALONIA_SKIA
+ [Fact(Skip = "Opacity Masks not supported on Skia")]
+#else
+ [Fact]
+#endif
+ public void Opacity_Mask_Masks_Element()
+ {
+ var target = new Canvas
+ {
+ OpacityMask = new LinearGradientBrush
+ {
+ StartPoint = new RelativePoint(0, 0, RelativeUnit.Relative),
+ EndPoint = new RelativePoint(1, 1, RelativeUnit.Relative),
+ GradientStops = new List
+ {
+ new GradientStop(Color.FromUInt32(0xffffffff), 0),
+ new GradientStop(Color.FromUInt32(0x00ffffff), 1)
+ }
+ },
+ Width = 76,
+ Height = 76,
+ Children = new Avalonia.Controls.Controls
+ {
+ new Path
+ {
+ Width = 32,
+ Height = 40,
+ [Canvas.LeftProperty] = 23,
+ [Canvas.TopProperty] = 18,
+ Stretch = Stretch.Fill,
+ Fill = Brushes.Red,
+ Data = StreamGeometry.Parse("F1 M 27,18L 23,26L 33,30L 24,38L 33,46L 23,50L 27,58L 45,58L 55,38L 45,18L 27,18 Z")
+ }
+ }
+ };
+
+ RenderToFile(target);
+ CompareImages();
+ }
+ }
+}
diff --git a/tests/TestFiles/Cairo/OpacityMask/Opacity_Mask_Masks_Element.expected.png b/tests/TestFiles/Cairo/OpacityMask/Opacity_Mask_Masks_Element.expected.png
new file mode 100644
index 0000000000..f57c675b7a
Binary files /dev/null and b/tests/TestFiles/Cairo/OpacityMask/Opacity_Mask_Masks_Element.expected.png differ
diff --git a/tests/TestFiles/Direct2D1/OpacityMask/Opacity_Mask_Masks_Element.expected.png b/tests/TestFiles/Direct2D1/OpacityMask/Opacity_Mask_Masks_Element.expected.png
new file mode 100644
index 0000000000..ba8312accf
Binary files /dev/null and b/tests/TestFiles/Direct2D1/OpacityMask/Opacity_Mask_Masks_Element.expected.png differ
diff --git a/tests/TestFiles/Skia/OpacityMask/Opacity_Mask_Masks_Element.expected.png b/tests/TestFiles/Skia/OpacityMask/Opacity_Mask_Masks_Element.expected.png
new file mode 100644
index 0000000000..f57c675b7a
Binary files /dev/null and b/tests/TestFiles/Skia/OpacityMask/Opacity_Mask_Masks_Element.expected.png differ