diff --git a/components/file.inc b/components/file.inc
index 4a5654f..160119b 100644
--- a/components/file.inc
+++ b/components/file.inc
@@ -399,6 +399,7 @@ function theme_webform_display_file($variables) {
 function _webform_delete_file($component, $value) {
   // Delete an individual submission file.
   if (!empty($value[0]) && ($file = webform_get_file($value[0]))) {
+    file_usage_delete($file, 'webform');
     file_delete($file);
   }
 }
diff --git a/webform.install b/webform.install
index 19dacf4..45fa64f 100644
--- a/webform.install
+++ b/webform.install
@@ -831,3 +831,15 @@ function webform_update_7319(&$sandbox) {
 function webform_update_7320() {
   db_query("UPDATE {file_managed} SET status = 1 WHERE fid IN (SELECT fid FROM {file_usage} WHERE module = :module_name)", array(':module_name' => 'webform'));
 }
+
+/**
+ * Remove files left over from deleted submissions. Such files are now deleted
+ * automatically.
+ */
+function webform_update_7321() {
+  module_load_include('inc', 'webform', 'components/file');
+  $fids = db_query("SELECT fid FROM {file_usage} WHERE module = 'webform' AND type = 'submission' AND NOT id IN(SELECT sid FROM {webform_submissions})")->fetchCol();
+  foreach ($fids as $fid) {
+    _webform_delete_file(NULL, array($fid));
+  }
+}
