diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
index dac0e51..71af3e2 100644
--- a/panels/color/cc-color-panel.c
+++ b/panels/color/cc-color-panel.c
@@ -973,7 +973,7 @@ gcm_prefs_profile_view (CcColorPanel *self, CdProfile *profile)
 
   /* open up gcm-viewer as a info pane */
   argv = g_ptr_array_new_with_free_func (g_free);
-  g_ptr_array_add (argv, g_strdup ("gcm-viewer"));
+  g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL));
   g_ptr_array_add (argv, g_strdup ("--profile"));
   g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
   g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -1141,15 +1141,12 @@ gcm_prefs_device_clicked (CcColorPanel *self, CdDevice *device)
 static void
 gcm_prefs_profile_clicked (CcColorPanel *self, CdProfile *profile, CdDevice *device)
 {
-  g_autofree gchar *s = NULL;
-
   /* get profile */
   g_debug ("selected profile = %s",
      cd_profile_get_filename (profile));
 
   /* allow getting profile info */
-  if (cd_profile_get_filename (profile) != NULL &&
-      (s = g_find_program_in_path ("gcm-viewer")) != NULL)
+  if (cd_profile_get_filename (profile) != NULL)
     gtk_widget_set_sensitive (self->toolbutton_profile_view, TRUE);
   else
     gtk_widget_set_sensitive (self->toolbutton_profile_view, FALSE);
diff --git a/panels/system/datetime/tz.h b/panels/system/datetime/tz.h
index feef165..4b88ef7 100644
--- a/panels/system/datetime/tz.h
+++ b/panels/system/datetime/tz.h
@@ -27,11 +27,7 @@
 
 G_BEGIN_DECLS
 
-#ifndef __sun
-#  define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-#  define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
 
 typedef struct _TzDB TzDB;
 typedef struct _TzLocation TzLocation;
diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
index f1cae8d..faee22a 100644
--- a/panels/network/connection-editor/net-connection-editor.c
+++ b/panels/network/connection-editor/net-connection-editor.c
@@ -384,7 +384,7 @@ net_connection_editor_do_fallback (NetConnectionEditor *self, const gchar *type)
         GPid child_pid;
 
         builder = g_strv_builder_new ();
-        g_strv_builder_add (builder, "nm-connection-editor");
+        g_strv_builder_add (builder, "@networkmanagerapplet@/bin/nm-connection-editor");
 
         if (self->is_new_connection) {
                 g_autofree gchar *type_str = NULL;
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index d0b0206..8276af0 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -521,7 +521,7 @@ options_button_clicked_cb (NetDeviceMobile *self)
 
         connection = net_device_get_find_connection (self->client, self->device);
         uuid = nm_connection_get_uuid (connection);
-        cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+        cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
         g_debug ("Launching '%s'\n", cmdline);
         if (!g_spawn_command_line_async (cmdline, &error))
                 g_warning ("Failed to launch nm-connection-editor: %s", error->message);
@@ -810,7 +810,7 @@ net_device_mobile_init (NetDeviceMobile *self)
 
         self->cancellable = g_cancellable_new ();
 
-        path = g_find_program_in_path ("nm-connection-editor");
+        path = g_find_program_in_path ("@networkmanagerapplet@/bin/nm-connection-editor");
         gtk_widget_set_visible (GTK_WIDGET (self->options_button), path != NULL);
 }
 
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index a31a606..ed5133d 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask        *task,
   devices = g_ptr_array_new_with_free_func (g_object_unref);
 
   argv = g_new0 (gchar *, 3);
-  argv[0] = g_strdup ("/usr/lib/cups/backend/snmp");
+  argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp");
   argv[1] = g_strdup (priv->hostname);
 
   /* Use SNMP to get printer's informations */
diff --git a/panels/system/users/run-passwd.c b/panels/system/users/run-passwd.c
index fb9efc6..452486a 100644
--- a/panels/system/users/run-passwd.c
+++ b/panels/system/users/run-passwd.c
@@ -152,7 +152,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error)
         gchar  **envp;
         gint    my_stdin, my_stdout;
 
-        argv[0] = "/usr/bin/passwd";    /* Is it safe to rely on a hard-coded path? */
+        argv[0] = "/run/wrappers/bin/passwd";    /* Is it safe to rely on a hard-coded path? */
         argv[1] = NULL;
 
         envp = g_get_environ ();
diff --git a/panels/system/users/user-utils.c b/panels/system/users/user-utils.c
index 16dc79e..f543e7b 100644
--- a/panels/system/users/user-utils.c
+++ b/panels/system/users/user-utils.c
@@ -217,7 +217,7 @@ is_valid_username_async (const gchar *username,
          * future, so it would be nice to have some official way for this
          * instead of relying on the current "--login" implementation.
          */
-        argv[0] = "/usr/sbin/usermod";
+        argv[0] = "@shadow@/bin/usermod";
         argv[1] = "--login";
         argv[2] = data->username;
         argv[3] = "--";
diff --git a/tests/datetime/test-endianess.c b/tests/datetime/test-endianess.c
index 9cb9200..84d2f0f 100644
--- a/tests/datetime/test-endianess.c
+++ b/tests/datetime/test-endianess.c
@@ -26,7 +26,7 @@ test_endianess (void)
 	g_autoptr(GDir) dir = NULL;
 	const char *name;
 
-	dir = g_dir_open ("/usr/share/i18n/locales/", 0, NULL);
+	dir = g_dir_open ("@glibc@/share/i18n/locales/", 0, NULL);
 	if (dir == NULL) {
 		/* Try with /usr/share/locale/
 		 * https://bugzilla.gnome.org/show_bug.cgi?id=646780 */
