diff --git a/src/Avalonia.Base/Threading/DispatcherPriority.cs b/src/Avalonia.Base/Threading/DispatcherPriority.cs
index f041590fc0..b3194e249b 100644
--- a/src/Avalonia.Base/Threading/DispatcherPriority.cs
+++ b/src/Avalonia.Base/Threading/DispatcherPriority.cs
@@ -45,32 +45,37 @@ namespace Avalonia.Threading
///
/// The job will be processed after other non-idle operations have completed.
///
- public static readonly DispatcherPriority Background = new(1);
+ public static readonly DispatcherPriority Background = new(MinValue + 1);
///
/// The job will be processed with the same priority as input.
///
- public static readonly DispatcherPriority Input = new(2);
+ public static readonly DispatcherPriority Input = new(Background + 1);
///
/// The job will be processed after layout and render but before input.
///
- public static readonly DispatcherPriority Loaded = new(3);
-
+ public static readonly DispatcherPriority Loaded = new(Input + 1);
+
///
/// The job will be processed with the same priority as render.
///
- public static readonly DispatcherPriority Render = new(5);
-
+ public static readonly DispatcherPriority Render = new(Loaded + 1);
+
///
/// The job will be processed with the same priority as composition updates.
///
- public static readonly DispatcherPriority Composition = new(6);
-
+ public static readonly DispatcherPriority Composition = new(Render + 1);
+
///
- /// The job will be processed with the same priority as render.
+ /// The job will be processed with before composition updates.
+ ///
+ public static readonly DispatcherPriority PreComposition = new(Composition + 1);
+
+ ///
+ /// The job will be processed with the same priority as layout.
///
- public static readonly DispatcherPriority Layout = new(7);
+ public static readonly DispatcherPriority Layout = new(PreComposition + 1);
///
/// The job will be processed with the same priority as data binding.
@@ -80,7 +85,7 @@ namespace Avalonia.Threading
///
/// The job will be processed before other asynchronous operations.
///
- public static readonly DispatcherPriority Send = new(8);
+ public static readonly DispatcherPriority Send = new(Layout + 1);
///
/// Maximum possible priority
@@ -123,4 +128,4 @@ namespace Avalonia.Threading
///
public int CompareTo(DispatcherPriority other) => Value.CompareTo(other.Value);
}
-}
\ No newline at end of file
+}