diff --git a/monitor/proxy/gproxyshadowmount.c b/monitor/proxy/gproxyshadowmount.c
index 71cc1c8..0032e53 100644
--- a/monitor/proxy/gproxyshadowmount.c
+++ b/monitor/proxy/gproxyshadowmount.c
@@ -113,12 +113,11 @@ g_proxy_shadow_mount_init (GProxyShadowMount *proxy_shadow_mount)
 }
 
 static void
-real_mount_pre_unmount_cb (GVolumeMonitor    *volume_monitor,
-                           GMount            *mount,
-                           GProxyShadowMount *shadow_mount)
+real_mount_pre_unmount_cb (GMount            *real_mount,
+                           GProxyShadowMount *mount)
 {
-  if (mount == shadow_mount->real_mount)
-    signal_emit_in_idle (shadow_mount->volume_monitor, "mount-pre-unmount", shadow_mount);
+  signal_emit_in_idle (mount, "pre-unmount", NULL);
+  signal_emit_in_idle (mount->volume_monitor, "mount-pre-unmount", mount);
 }
 
 void
@@ -167,7 +166,7 @@ g_proxy_shadow_mount_new (GProxyVolumeMonitor *volume_monitor,
   signal_emit_in_idle (mount->real_mount, "changed", NULL);
   signal_emit_in_idle (mount->volume_monitor, "mount-changed", mount->real_mount);
 
-  mount->pre_unmount_signal_id = g_signal_connect (mount->volume_monitor, "mount-pre-unmount",
+  mount->pre_unmount_signal_id = g_signal_connect (mount->real_mount, "pre-unmount",
                                                    G_CALLBACK (real_mount_pre_unmount_cb), mount);
 
   g_object_set_data (G_OBJECT (mount),
diff --git a/monitor/proxy/gproxyvolumemonitor.c b/monitor/proxy/gproxyvolumemonitor.c
index 662a6d6..aa79460 100644
--- a/monitor/proxy/gproxyvolumemonitor.c
+++ b/monitor/proxy/gproxyvolumemonitor.c
@@ -815,7 +815,10 @@ filter_function (DBusConnection *connection, DBusMessage *message, void *user_da
         {
           mount = g_hash_table_lookup (monitor->mounts, id);
           if (mount != NULL)
-            signal_emit_in_idle (monitor, "mount-pre-unmount", mount);
+            {
+              signal_emit_in_idle (mount, "pre-unmount", NULL);
+              signal_emit_in_idle (monitor, "mount-pre-unmount", mount);
+            }
         }
       else if (strcmp (member, "MountRemoved") == 0)
         {
