diff --git a/samples/AvalonDraw/GradientMeshEditorWindow.axaml b/samples/AvalonDraw/GradientMeshEditorWindow.axaml
new file mode 100644
index 0000000000..c355a93131
--- /dev/null
+++ b/samples/AvalonDraw/GradientMeshEditorWindow.axaml
@@ -0,0 +1,17 @@
+
+
+
diff --git a/samples/AvalonDraw/GradientMeshEditorWindow.axaml.cs b/samples/AvalonDraw/GradientMeshEditorWindow.axaml.cs
new file mode 100644
index 0000000000..8288b66785
--- /dev/null
+++ b/samples/AvalonDraw/GradientMeshEditorWindow.axaml.cs
@@ -0,0 +1,77 @@
+using System.Collections.ObjectModel;
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Input;
+using Avalonia.Markup.Xaml;
+using Avalonia.Media;
+using Svg.Model;
+
+namespace AvalonDraw;
+
+public partial class GradientMeshEditorWindow : Window
+{
+ private readonly Canvas _canvas;
+ private GradientMeshPoint? _dragging;
+
+ public ObservableCollection Points { get; } = new();
+
+ public GradientMeshEditorWindow(GradientMesh mesh)
+ {
+ InitializeComponent();
+ _canvas = this.FindControl