diff --git a/plugins/thunar-tpa/thunar-tpa.c b/plugins/thunar-tpa/thunar-tpa.c
index 184237c510a36bfd9f9b39100ca5bf134b1ed20a..6044b43ddadce646999919bf0c5d51529d27dabe 100644
--- a/plugins/thunar-tpa/thunar-tpa.c
+++ b/plugins/thunar-tpa/thunar-tpa.c
@@ -493,8 +493,9 @@ thunar_tpa_trash_changed (DBusGProxy *proxy,
 static void
 thunar_tpa_display_trash (ThunarTpa *plugin)
 {
-  gchar *display_name;
-  gchar *startup_id;
+  gchar     *display_name;
+  gchar     *startup_id;
+  GdkScreen *screen;
 
   g_return_if_fail (THUNAR_IS_TPA (plugin));
 
@@ -506,7 +507,8 @@ thunar_tpa_display_trash (ThunarTpa *plugin)
         dbus_g_proxy_cancel_call (plugin->proxy, plugin->display_trash_call);
 
       /* schedule a new call */
-      display_name = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (plugin)));
+      screen = gtk_widget_get_screen (GTK_WIDGET (plugin));
+      display_name = g_strdup (gdk_display_get_name (gdk_screen_get_display (screen)));
       startup_id = g_strdup_printf ("_TIME%d", gtk_get_current_event_time ());
       plugin->display_trash_call = org_xfce_Trash_display_trash_async (plugin->proxy, display_name, startup_id, thunar_tpa_display_trash_reply, plugin);
       g_free (startup_id);
@@ -519,8 +521,9 @@ thunar_tpa_display_trash (ThunarTpa *plugin)
 static void
 thunar_tpa_empty_trash (ThunarTpa *plugin)
 {
-  gchar *display_name;
-  gchar *startup_id;
+  gchar     *display_name;
+  gchar     *startup_id;
+  GdkScreen *screen;
 
   g_return_if_fail (THUNAR_IS_TPA (plugin));
 
@@ -532,7 +535,8 @@ thunar_tpa_empty_trash (ThunarTpa *plugin)
         dbus_g_proxy_cancel_call (plugin->proxy, plugin->empty_trash_call);
 
       /* schedule a new call */
-      display_name = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (plugin)));
+      screen = gtk_widget_get_screen (GTK_WIDGET (plugin));
+      display_name = g_strdup (gdk_display_get_name (gdk_screen_get_display (screen)));
       startup_id = g_strdup_printf ("_TIME%d", gtk_get_current_event_time ());
       plugin->empty_trash_call = org_xfce_Trash_empty_trash_async (plugin->proxy, display_name, startup_id, thunar_tpa_empty_trash_reply, plugin);
       g_free (startup_id);
@@ -546,8 +550,9 @@ static gboolean
 thunar_tpa_move_to_trash (ThunarTpa    *plugin,
                           const gchar **uri_list)
 {
-  gchar *display_name;
-  gchar *startup_id;
+  gchar     *display_name;
+  gchar     *startup_id;
+  GdkScreen *screen;
 
   g_return_val_if_fail (THUNAR_IS_TPA (plugin), FALSE);
   g_return_val_if_fail (uri_list != NULL, FALSE);
@@ -561,7 +566,8 @@ thunar_tpa_move_to_trash (ThunarTpa    *plugin,
     dbus_g_proxy_cancel_call (plugin->proxy, plugin->move_to_trash_call);
 
   /* schedule a new call */
-  display_name = gdk_screen_make_display_name (gtk_widget_get_screen (GTK_WIDGET (plugin)));
+  screen = gtk_widget_get_screen (GTK_WIDGET (plugin));
+  display_name = g_strdup (gdk_display_get_name (gdk_screen_get_display (screen)));
   startup_id = g_strdup_printf ("_TIME%d", gtk_get_current_event_time ());
   plugin->move_to_trash_call = org_xfce_Trash_move_to_trash_async (plugin->proxy, uri_list, display_name, startup_id, thunar_tpa_move_to_trash_reply, plugin);
   g_free (startup_id);
diff --git a/thunar/thunar-application.c b/thunar/thunar-application.c
index 7781884aa762529efbb8a3b009102c6bdb4dc806..28457c8b2b0efcb12d83bbd566f48a7bc1502880 100644
--- a/thunar/thunar-application.c
+++ b/thunar/thunar-application.c
@@ -939,7 +939,7 @@ thunar_application_volman_idle (gpointer user_data)
           screen = xfce_gdk_screen_get_active (NULL);
 
           if (screen != NULL)
-            display = gdk_screen_make_display_name (screen);
+            display = g_strdup (gdk_display_get_name (gdk_screen_get_display (screen)));
 
           /* try to spawn the volman on the active screen */
           if (g_spawn_async (NULL, argv, NULL, G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_SEARCH_PATH, thunar_setup_display_cb, display, &pid, &err))
diff --git a/thunar/thunar-chooser-dialog.c b/thunar/thunar-chooser-dialog.c
index ea489ba1ab763286bbe262d974cb1c56b83b9720..7fd61544a6c5c6e8a5eead6ad5bea8979c6a7114 100644
--- a/thunar/thunar-chooser-dialog.c
+++ b/thunar/thunar-chooser-dialog.c
@@ -399,6 +399,7 @@ thunar_chooser_dialog_response (GtkDialog *widget,
   gchar               *name;
   gchar               *s;
   GList                list;
+  GdkScreen           *screen;
 
   /* no special processing for non-accept responses */
   if (G_UNLIKELY (response != GTK_RESPONSE_ACCEPT))
@@ -487,8 +488,9 @@ thunar_chooser_dialog_response (GtkDialog *widget,
   if (G_LIKELY (succeed && dialog->open))
     {
       /* create launch context */
-      context = gdk_app_launch_context_new ();
-      gdk_app_launch_context_set_screen (context, gtk_widget_get_screen (GTK_WIDGET (dialog)));
+      screen = gtk_widget_get_screen (GTK_WIDGET (dialog));
+      context = gdk_display_get_app_launch_context (gdk_screen_get_display (screen));
+      gdk_app_launch_context_set_screen (context, screen);
       gdk_app_launch_context_set_timestamp (context, gtk_get_current_event_time ());
 
       /* create fake file list */
diff --git a/thunar/thunar-emblem-chooser.c b/thunar/thunar-emblem-chooser.c
index be61f091ec8cdba6bcdc328a7467c4c42171356b..4332c58a873e938ce342c89a2872f0a762046f51 100644
--- a/thunar/thunar-emblem-chooser.c
+++ b/thunar/thunar-emblem-chooser.c
@@ -469,7 +469,7 @@ thunar_emblem_chooser_create_button (ThunarEmblemChooser *chooser,
 
   g_object_unref (G_OBJECT (icon));
 done:
-  gtk_icon_info_free (info);
+  g_object_unref (info);
   return button;
 }
 
diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c
index 530bd1a73aa76fed273d03aac3173198e7a62bc5..1c6ec217cdb7b9837e3655fda3364aa78872cf4a 100644
--- a/thunar/thunar-file.c
+++ b/thunar/thunar-file.c
@@ -1830,7 +1830,7 @@ thunar_file_launch (ThunarFile  *file,
   path_list.next = path_list.prev = NULL;
 
   /* create a launch context */
-  context = gdk_app_launch_context_new ();
+  context = gdk_display_get_app_launch_context (gdk_screen_get_display (screen));
   gdk_app_launch_context_set_screen (context, screen);
   gdk_app_launch_context_set_timestamp (context, gtk_get_current_event_time ());
 
diff --git a/thunar/thunar-icon-factory.c b/thunar/thunar-icon-factory.c
index 28a339863faf9dd1e102da46977ba7c8e8a52cfb..fd6bdc3cb2c87b007b157774ff340d2db63b467c 100644
--- a/thunar/thunar-icon-factory.c
+++ b/thunar/thunar-icon-factory.c
@@ -506,7 +506,7 @@ thunar_icon_factory_lookup_icon (ThunarIconFactory *factory,
               pixbuf = gtk_icon_info_load_icon (icon_info, NULL);
 
               /* cleanup */
-              gtk_icon_info_free (icon_info);
+              g_object_unref (icon_info);
             }
         }
 
@@ -848,7 +848,7 @@ thunar_icon_factory_load_file_icon (ThunarIconFactory  *factory,
                 {
                   /* try to load the pixbuf from the icon info */
                   icon = gtk_icon_info_load_icon (icon_info, NULL);
-                  gtk_icon_info_free (icon_info);
+                  g_object_unref (icon_info);
                 }
             }
           else if (G_IS_LOADABLE_ICON (gicon))
diff --git a/thunar/thunar-launcher.c b/thunar/thunar-launcher.c
index 8ad88d4b2bbb4efc14ef713696b3969fdf54b09c..34928e07e756ecc221ff2ed3d089fb44b3f16080 100644
--- a/thunar/thunar-launcher.c
+++ b/thunar/thunar-launcher.c
@@ -655,7 +655,7 @@ thunar_launcher_open_paths (GAppInfo       *app_info,
   screen = (launcher->widget != NULL) ? gtk_widget_get_screen (launcher->widget) : NULL;
 
   /* create launch context */
-  context = gdk_app_launch_context_new ();
+  context = gdk_display_get_app_launch_context (gdk_screen_get_display (screen));
   gdk_app_launch_context_set_screen (context, screen);
   gdk_app_launch_context_set_timestamp (context, gtk_get_current_event_time ());
   gdk_app_launch_context_set_icon (context, g_app_info_get_icon (app_info));
diff --git a/thunar/thunar-preferences-dialog.c b/thunar/thunar-preferences-dialog.c
index 0c5485efc6320f29e33a78083aa1c31d64351ab8..9feb381cf31cb2014e1e383bf72f84cf9386836d 100644
--- a/thunar/thunar-preferences-dialog.c
+++ b/thunar/thunar-preferences-dialog.c
@@ -708,7 +708,7 @@ thunar_preferences_dialog_configure (ThunarPreferencesDialog *dialog)
   screen = gtk_widget_get_screen (GTK_WIDGET (dialog));
 
   if (screen != NULL)
-    display = gdk_screen_make_display_name (screen);
+    display = g_strdup (gdk_display_get_name (gdk_screen_get_display (screen)));
 
   /* invoke the configuration interface of thunar-volman */
   if (!g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, thunar_setup_display_cb, display, NULL, &err))
diff --git a/thunar/thunar-session-client.c b/thunar/thunar-session-client.c
index 26d8d05517eaed939a304a5ce5f24abe39c47ebd..ff49b66a6f2e1b50b4724e2bd1e3cb027c9fad4f 100644
--- a/thunar/thunar-session-client.c
+++ b/thunar/thunar-session-client.c
@@ -173,18 +173,7 @@ thunar_session_client_connect (ThunarSessionClient *session_client,
   /* tell GDK about our new session id */
   gdk_x11_set_sm_client_id (id);
 
-  /* remember the returned client id */
-  if (g_mem_is_system_malloc ())
-    {
-      /* just use the memory */
-      session_client->id = id;
-    }
-  else
-    {
-      /* use GLib memory management */
-      session_client->id = g_strdup (id);
-      free (id);
-    }
+  session_client->id = id;
 
   /* determine the session file path */
   spec = g_strconcat ("sessions/Thunar-", session_client->id, NULL);
diff --git a/thunar/thunar-shortcuts-icon-renderer.c b/thunar/thunar-shortcuts-icon-renderer.c
index 0b7b451fbe1919cc0632cf2ffb4472c7dcf29fe5..2fd839f0faa9cfb69b7c8dc6366c68350d513d35 100644
--- a/thunar/thunar-shortcuts-icon-renderer.c
+++ b/thunar/thunar-shortcuts-icon-renderer.c
@@ -245,7 +245,7 @@ thunar_shortcuts_icon_renderer_render (GtkCellRenderer     *renderer,
       if (G_LIKELY (icon_info != NULL))
         {
           icon = gtk_icon_info_load_icon (icon_info, NULL);
-          gtk_icon_info_free (icon_info);
+          g_object_unref (icon_info);
         }
 
       /* render the icon (if any) */
diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index ca7086b671d10ca7424d838673faf4fe1844e2ee..04e2a3df61525311c8f9b6594e891e724986930a 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -3392,7 +3392,7 @@ thunar_standard_view_drag_data_received (GtkWidget          *view,
                       screen = gtk_widget_get_screen (GTK_WIDGET (view));
 
                       if (screen != NULL)
-                        display = gdk_screen_make_display_name (screen);
+                        display = g_strdup (gdk_display_get_name (gdk_screen_get_display (screen)));
 
                       /* try to run exo-desktop-item-edit */
                       succeed = g_spawn_async (working_directory, argv, NULL,
diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c
index d666f56672a048312978d3f02da76759c3696994..694c0287fc0958e6ebf3c1aae8acbf0a8aa0204b 100644
--- a/thunar/thunar-tree-view.c
+++ b/thunar/thunar-tree-view.c
@@ -2665,7 +2665,7 @@ thunar_tree_view_drag_scroll_timer (gpointer user_data)
       if (G_UNLIKELY (offset != 0))
         {
           /* determine the vertical adjustment */
-          vadjustment = gtk_tree_view_get_vadjustment (GTK_TREE_VIEW (view));
+          vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (view));
 
           /* determine the new value */
           value = CLAMP (gtk_adjustment_get_value (vadjustment) + 2 * offset, gtk_adjustment_get_lower (vadjustment), gtk_adjustment_get_upper (vadjustment) - gtk_adjustment_get_page_size (vadjustment));
diff --git a/thunar/thunar-window.c b/thunar/thunar-window.c
index f1950b471867161bb8a945346d29280fa8392ce8..8db402f460be6e9fd8f2d6de709fe6b9381971e5 100644
--- a/thunar/thunar-window.c
+++ b/thunar/thunar-window.c
@@ -3456,9 +3456,9 @@ thunar_window_notify_loading (ThunarView   *view,
       /* setup the proper cursor */
       if (thunar_view_get_loading (view))
         {
-          cursor = gdk_cursor_new (GDK_WATCH);
+          cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (view)), GDK_WATCH);
           gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), cursor);
-          gdk_cursor_unref (cursor);
+          g_object_unref (cursor);
         }
       else
         {