diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index fc53e72400e8400026230ce32bee4ddf37ddbe27..49fd16304de639b951147c0c5097cd1bddfbbf63 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -3949,6 +3949,9 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data)
 {
   ThunarStandardView *standard_view = THUNAR_STANDARD_VIEW (user_data);
   GtkAdjustment      *adjustment;
+  GdkWindow          *window;
+  GdkSeat            *seat;
+  GdkDevice          *pointer;
   gfloat              value;
   gint                offset;
   gint                y, x;
@@ -3960,8 +3963,12 @@ thunar_standard_view_drag_scroll_timer (gpointer user_data)
   if (G_LIKELY (gtk_widget_get_realized (GTK_WIDGET (standard_view))))
     {
       /* determine pointer location and window geometry */
-      gdk_window_get_pointer (gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))), &x, &y, NULL);
-      gdk_window_get_geometry (gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view))), NULL, NULL, &w, &h);
+      window = gtk_widget_get_window (gtk_bin_get_child (GTK_BIN (standard_view)));
+      seat = gdk_display_get_default_seat (gdk_display_get_default ());
+      pointer = gdk_seat_get_pointer (seat);
+
+      gdk_window_get_device_position (window, pointer, &x, &y, NULL);
+      gdk_window_get_geometry (window, NULL, NULL, &w, &h);
 
       /* check if we are near the edge (vertical) */
       offset = y - (2 * 20);
diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c
index 6a0cbe3650d3ea5158350e7008d02645811cf9c2..b11f4a83f83cbd704eea5a7520d177d6e8a3e471 100644
--- a/thunar/thunar-tree-view.c
+++ b/thunar/thunar-tree-view.c
@@ -2633,6 +2633,9 @@ thunar_tree_view_drag_scroll_timer (gpointer user_data)
   GtkTreePath    *start_path;
   GtkTreePath    *end_path;
   GtkTreePath    *path;
+  GdkWindow      *window;
+  GdkSeat        *seat;
+  GdkDevice      *pointer;
   gfloat          value;
   gint            offset;
   gint            y, h;
@@ -2643,8 +2646,12 @@ thunar_tree_view_drag_scroll_timer (gpointer user_data)
   if (gtk_widget_get_realized (GTK_WIDGET (view)))
     {
       /* determine pointer location and window geometry */
-      gdk_window_get_pointer (gtk_widget_get_window (GTK_WIDGET (view)), NULL, &y, NULL);
-      gdk_window_get_geometry (gtk_widget_get_window (GTK_WIDGET (view)), NULL, NULL, NULL, &h);
+      window = gtk_widget_get_window (GTK_WIDGET (view));
+      seat = gdk_display_get_default_seat (gdk_display_get_default ());
+      pointer = gdk_seat_get_pointer (seat);
+
+      gdk_window_get_device_position (window, pointer, NULL, &y, NULL);
+      gdk_window_get_geometry (window, NULL, NULL, NULL, &h);
 
       /* check if we are near the edge */
       offset = y - (2 * 20);