Index: src/wp-includes/js/tinymce/plugins/paste/plugin.js
===================================================================
--- src/wp-includes/js/tinymce/plugins/paste/plugin.js	(revision 28187)
+++ src/wp-includes/js/tinymce/plugins/paste/plugin.js	(working copy)
@@ -208,7 +208,7 @@
  *  2. Wait for the browser to fire a "paste" event and get the contents out of the paste bin.
  *  3. Check if the paste was successful if true, process the HTML.
  *  (4). If the paste was unsuccessful use IE execCommand, Clipboard API, document.dataTransfer old WebKit API etc.
- * 
+ *
  * @class tinymce.pasteplugin.Clipboard
  * @private
  */
@@ -1036,7 +1036,8 @@
 						if (!href && !name) {
 							node.unwrap();
 						} else {
-							if (name && name.indexOf('Toc') !== 0) {
+							// Remove all named anchors that isn't toc specific
+							if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) {
 								node.unwrap();
 								continue;
 							}
@@ -1112,7 +1113,8 @@
 		 */
 		function removeWebKitFragments(html) {
 			html = Utils.filter(html, [
-				/^[\s\S]*<!--StartFragment-->|<!--EndFragment-->[\s\S]*$/g, // WebKit fragment
+				/^[\s\S]*<body[^>]*>\s*<!--StartFragment-->|<!--EndFragment-->\s*<\/body[^>]*>[\s\S]*$/g, // WebKit fragment body
+				/<!--StartFragment-->|<!--EndFragment-->/g, // Inner fragments (tables from excel on mac)
 				[/<span class="Apple-converted-space">\u00a0<\/span>/g, '\u00a0'], // WebKit &nbsp;
 				/<br>$/i // Traling BR elements
 			]);
@@ -1344,4 +1346,4 @@
 });
 
 expose(["tinymce/pasteplugin/Utils","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks","tinymce/pasteplugin/Plugin"]);
-})(this);
\ No newline at end of file
+})(this);
