diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 1ce578a..0426ab3 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -3594,6 +3594,12 @@ msg_composer_save_to_drafts_cb (EMsgComposer *composer,
 		g_warn_if_fail (message == NULL);
 		async_context_free (context);
 		g_error_free (error);
+
+		if (e_msg_composer_is_exiting (composer)) {
+			gtk_window_present (GTK_WINDOW (composer));
+			composer->priv->application_exiting = FALSE;
+		}
+
 		return;
 	}
 
@@ -3605,6 +3611,12 @@ msg_composer_save_to_drafts_cb (EMsgComposer *composer,
 			error->message, NULL);
 		async_context_free (context);
 		g_error_free (error);
+
+		if (e_msg_composer_is_exiting (composer)) {
+			gtk_window_present (GTK_WINDOW (composer));
+			composer->priv->application_exiting = FALSE;
+		}
+
 		return;
 	}
 
@@ -3620,6 +3632,9 @@ msg_composer_save_to_drafts_cb (EMsgComposer *composer,
 
 	g_object_unref (message);
 
+	if (e_msg_composer_is_exiting (composer))
+		g_object_weak_ref (G_OBJECT (context->activity), (GWeakNotify) gtk_widget_destroy, composer);
+
 	async_context_free (context);
 }
 
