diff --git a/client/methods/deleteMessage.js b/client/methods/deleteMessage.js
index 2f77e1d825cf82e9fed9153f29b6278e06020b0a..e7acb1c30aa31b643ce644aaf8114c5d9409c819 100644
--- a/client/methods/deleteMessage.js
+++ b/client/methods/deleteMessage.js
@@ -7,6 +7,9 @@ Meteor.methods({
 			return false;
 		}
 
+		//We're now only passed in the `_id` property to lower the amount of data sent to the server
+		message = ChatMessage.findOne({ _id: message._id });
+
 		const hasPermission = RocketChat.authz.hasAtLeastOnePermission('delete-message', message.rid);
 		const deleteAllowed = RocketChat.settings.get('Message_AllowDeleting');
 		let deleteOwn = false;
diff --git a/packages/rocketchat-file-upload/lib/FileUploadBase.js b/packages/rocketchat-file-upload/lib/FileUploadBase.js
index 2e93fcfa166edced447f2231a211bf0ff884b4fc..9f8e4e6a1cf38d6794211fb66c2802e7a2b4e49d 100644
--- a/packages/rocketchat-file-upload/lib/FileUploadBase.js
+++ b/packages/rocketchat-file-upload/lib/FileUploadBase.js
@@ -9,7 +9,7 @@ UploadFS.config.defaultStorePermissions = new UploadFS.StorePermissions({
 		return userId === doc.userId;
 	},
 	remove: function(userId, doc) {
-		return userId === doc.userId;
+		return RocketChat.authz.hasPermission(Meteor.userId(), 'delete-message', doc.rid) || (RocketChat.settings.get('Message_AllowDeleting') && userId === doc.userId);
 	}
 });
 
diff --git a/packages/rocketchat-ui/lib/chatMessages.coffee b/packages/rocketchat-ui/lib/chatMessages.coffee
index f944ac27d0ed5e02c18c820ed8c04a8bcde8e307..eaa18561e633addbb4a05f242504321ea2d6ee7a 100644
--- a/packages/rocketchat-ui/lib/chatMessages.coffee
+++ b/packages/rocketchat-ui/lib/chatMessages.coffee
@@ -253,7 +253,7 @@ class @ChatMessages
 				toastr.error(t('Message_deleting_blocked'))
 				return
 
-		Meteor.call 'deleteMessage', message, (error, result) ->
+		Meteor.call 'deleteMessage', { _id: message._id }, (error, result) ->
 			if error
 				return handleError(error)
 
diff --git a/server/methods/deleteFileMessage.js b/server/methods/deleteFileMessage.js
index a664e3e8169770ab81b2aabda19c67484a130580..55590f5702b2d8c746377a0b4372929e6da2c531 100644
--- a/server/methods/deleteFileMessage.js
+++ b/server/methods/deleteFileMessage.js
@@ -1,7 +1,14 @@
+/* global FileUpload */
 Meteor.methods({
 	deleteFileMessage: function(fileID) {
 		check(fileID, String);
 
-		return Meteor.call('deleteMessage', RocketChat.models.Messages.getMessageByFileId(fileID));
+		const msg = RocketChat.models.Messages.getMessageByFileId(fileID);
+
+		if (msg) {
+			return Meteor.call('deleteMessage', msg);
+		}
+
+		return FileUpload.delete(fileID);
 	}
 });