diff --git a/libnautilus-private/nautilus-bookmark.c b/libnautilus-private/nautilus-bookmark.c
index 94009ca..b090d4d 100644
--- a/libnautilus-private/nautilus-bookmark.c
+++ b/libnautilus-private/nautilus-bookmark.c
@@ -245,6 +245,9 @@ nautilus_bookmark_get_icon (NautilusBookmark *bookmark)
 	/* Try to connect a file in case file exists now but didn't earlier. */
 	nautilus_bookmark_connect_file (bookmark);
 
+	nautilus_file_call_when_ready (bookmark->details->file,
+			NAUTILUS_FILE_ATTRIBUTES_FOR_ICON, NULL, NULL);
+
 	if (bookmark->details->icon) {
 		return g_object_ref (bookmark->details->icon);
 	}
diff --git a/libnautilus-private/nautilus-file.c b/libnautilus-private/nautilus-file.c
index 17d87dc..4219d36 100644
--- a/libnautilus-private/nautilus-file.c
+++ b/libnautilus-private/nautilus-file.c
@@ -4106,6 +4106,14 @@ nautilus_file_get_gicon (NautilusFile *file,
 	if (file->details->icon) {
 		icon = NULL;
 
+		if (flags == NAUTILUS_FILE_ICON_FLAGS_NONE) {
+			icon = get_custom_icon (file);
+
+			if (icon) {
+				return icon;
+			}
+		}
+
 		/* fetch the mount icon here, we'll use it later */
 		if (flags & NAUTILUS_FILE_ICON_FLAGS_USE_MOUNT_ICON ||
 		    flags & NAUTILUS_FILE_ICON_FLAGS_USE_MOUNT_ICON_AS_EMBLEM) {
diff --git a/src/nautilus-places-sidebar.c b/src/nautilus-places-sidebar.c
index 15b0ee0..4b4f91a 100644
--- a/src/nautilus-places-sidebar.c
+++ b/src/nautilus-places-sidebar.c
@@ -2467,6 +2467,21 @@ bookmarks_editing_canceled (GtkCellRenderer       *cell,
 }
 
 static void
+bookmark_connect_appearance_changed_signal (NautilusPlacesSidebar *sidebar)
+{
+	int index;
+	NautilusBookmark *bookmark;
+
+	for (index = 0; index < nautilus_bookmark_list_length (sidebar->bookmarks); ++index) {
+		bookmark = nautilus_bookmark_list_item_at (sidebar->bookmarks, index);
+
+		g_signal_connect_object (bookmark, "appearance_changed",
+				G_CALLBACK (update_places),
+				sidebar, G_CONNECT_SWAPPED);
+	}
+}
+
+static void
 trash_state_changed_cb (NautilusTrashMonitor *trash_monitor,
 			gboolean             state,
 			gpointer             data)
@@ -2744,6 +2759,10 @@ nautilus_places_sidebar_set_parent_window (NautilusPlacesSidebar *sidebar,
 	g_signal_connect_object (sidebar->bookmarks, "contents_changed",
 				 G_CALLBACK (update_places),
 				 sidebar, G_CONNECT_SWAPPED);
+	/* In case new bookmarks were added, we need to connect their NautilusFile objects too */
+	g_signal_connect_object (sidebar->bookmarks, "contents_changed",
+				 G_CALLBACK (bookmark_connect_appearance_changed_signal),
+				 sidebar, G_CONNECT_SWAPPED);
 
 	g_signal_connect_object (window, "loading_uri",
 				 G_CALLBACK (loading_uri_callback),
@@ -2768,6 +2787,7 @@ nautilus_places_sidebar_set_parent_window (NautilusPlacesSidebar *sidebar,
 	g_signal_connect_object (sidebar->volume_monitor, "drive_changed",
 				 G_CALLBACK (drive_changed_callback), sidebar, 0);
 
+	bookmark_connect_appearance_changed_signal (sidebar);
 	update_places (sidebar);
 }
 
