diff --git a/gnomemusic/albumArtCache.py b/gnomemusic/albumArtCache.py
index 277397f..400f6ba 100644
--- a/gnomemusic/albumArtCache.py
+++ b/gnomemusic/albumArtCache.py
@@ -292,39 +292,57 @@ class AlbumArtCache(GObject.GObject):
     @log
     def open_remote_thumb(self, src, result, arguments):
         (item, width, height, thumb_file, callback, itr, artist, album) = arguments
-        dest = Gio.File.new_for_path(thumb_file)
+        dest, ostream = Gio.File.new_tmp()
 
         try:
             istream = src.read_finish(result)
+
             dest.replace_async(None, False, Gio.FileCreateFlags.REPLACE_DESTINATION,
-                               GLib.PRIORITY_LOW, None, self.open_local_thumb,
+                               GLib.PRIORITY_LOW, None, self.open_local_tmp_thumb,
                                [item, width, height, thumb_file, callback, itr, artist, album, istream])
         except Exception as e:
             logger.warn("Error: %s", e)
             self.finish(item, None, None, callback, itr, width, height, artist, album)
 
     @log
-    def open_local_thumb(self, dest, result, arguments):
+    def open_local_tmp_thumb(self, dest, result, arguments):
         (item, width, height, thumb_file, callback, itr, artist, album, istream) = arguments
 
         try:
             ostream = dest.replace_finish(result)
+
             ostream.splice_async(istream,
                                  Gio.OutputStreamSpliceFlags.CLOSE_SOURCE |
                                  Gio.OutputStreamSpliceFlags.CLOSE_TARGET,
                                  GLib.PRIORITY_LOW, None,
                                  self.copy_finished,
-                                 [item, width, height, thumb_file, callback, itr, artist, album])
+                                 [item, width, height, dest.get_path(), thumb_file, callback, itr, artist, album])
         except Exception as e:
             logger.warn("Error: %s", e)
             self.finish(item, None, None, callback, itr, width, height, artist, album)
 
     @log
     def copy_finished(self, ostream, result, arguments):
-        (item, width, height, thumb_file, callback, itr, artist, album) = arguments
+        (item, width, height, tmp_path, thumb_file, callback, itr, artist, album) = arguments
 
         try:
             ostream.splice_finish(result)
+            MediaArt.file_to_jpeg(tmp_path, thumb_file)
+            tmp_file = Gio.File.new_for_path(tmp_path)
+            tmp_file.delete_async(GLib.PRIORITY_LOW, None, self.tmp_deleted,
+                                  [item, width, height, callback, itr, artist, album])
+
+        except Exception as e:
+            logger.warn("Error: %s", e)
+            self.finish(item, None, None, callback, itr, width, height, artist, album)
+
+    @log
+    def tmp_deleted(self, tmp_file, result, data):
+        (item, width, height, callback, itr, artist, album) = data
+
+        try:
+            tmp_file.delete_finish(result)
+
             self.lookup(item, width, height, callback, itr, artist, album, False)
         except Exception as e:
             logger.warn("Error: %s", e)
diff --git a/libgd b/libgd
--- a/libgd
+++ b/libgd
@@ -1 +1 @@
-Subproject commit a0717ad8c078c07ea9d10aed385d30198fd24b03
+Subproject commit a0717ad8c078c07ea9d10aed385d30198fd24b03-dirty
