diff --git a/hal/ghalmount.c b/hal/ghalmount.c
index 4ec3124..3380f79 100644
--- a/hal/ghalmount.c
+++ b/hal/ghalmount.c
@@ -388,6 +388,7 @@ do_update_from_hal (GHalMount *m)
   HalDevice *drive;
   char *name;
   const char *icon_name;
+  const char *icon_name_fallback;
   const char *drive_type;
   const char *drive_bus;
   gboolean drive_uses_removable_media;
@@ -437,14 +438,14 @@ do_update_from_hal (GHalMount *m)
   /*g_warning ("drive_bus='%s'", drive_bus); */
   /*g_warning ("drive_uses_removable_media=%d", drive_uses_removable_media); */
 
+  icon_name_fallback = NULL;
+
   if (strlen (volume_icon_from_hal) > 0)
     icon_name = volume_icon_from_hal;
   else if (strlen (icon_from_hal) > 0)
     icon_name = icon_from_hal;
   else if (is_audio_player)
     icon_name = "multimedia-player";
-  else if (is_crypto || is_crypto_cleartext)
-    icon_name = "media-encrypted";
   else if (strcmp (drive_type, "disk") == 0)
     {
       if (strcmp (drive_bus, "ide") == 0)
@@ -475,7 +476,12 @@ do_update_from_hal (GHalMount *m)
   else
     icon_name = "drive-harddisk";
 
-  
+  if (is_crypto || is_crypto_cleartext)
+    {
+      icon_name_fallback = icon_name;
+      icon_name = "media-encrypted";
+    }
+
   if (strlen (volume_name_from_hal) > 0)
     name = g_strdup (volume_name_from_hal);
   else if (strlen (name_from_hal) > 0)
@@ -514,6 +520,15 @@ do_update_from_hal (GHalMount *m)
 
   if (m->override_icon != NULL)
     m->icon = g_object_ref (m->override_icon);
+  else if (icon_name_fallback)
+    {
+      const char *names[2];
+
+      names[0] = icon_name;
+      names[1] = icon_name_fallback;
+
+      m->icon = g_themed_icon_new_from_names ((char **) names, 2);
+    }
   else
     m->icon = g_themed_icon_new_with_default_fallbacks (icon_name);
     
