Index: /CKEditor/branches/features/pasting/_source/core/htmlparser/filter.js
===================================================================
--- /CKEditor/branches/features/pasting/_source/core/htmlparser/filter.js	(revision 4280)
+++ /CKEditor/branches/features/pasting/_source/core/htmlparser/filter.js	(revision 4281)
@@ -92,4 +92,8 @@
 						if ( ret && ret != element )
 							return this.onElement( ret );
+
+						// The element has been dismissed by one of the filters.
+						if( !element.name )
+							break;
 					}
 				}
Index: /CKEditor/branches/features/pasting/_source/plugins/htmldataprocessor/plugin.js
===================================================================
--- /CKEditor/branches/features/pasting/_source/plugins/htmldataprocessor/plugin.js	(revision 4280)
+++ /CKEditor/branches/features/pasting/_source/plugins/htmldataprocessor/plugin.js	(revision 4281)
@@ -79,7 +79,16 @@
 			// active in the editing area (IE|WebKit).
 			[ ( /^on/ ), '_cke_pa_on' ],
-			// Bogus attributes.  
-			[ /^cke:/, '' ]
+			// Remove bogus attributes.
+			[ ( /^cke:.*/ ), '' ]
 		],
+		attributes :
+		{
+			// Remove empty style attribute.
+			'style' : function( value )
+			{
+				if( !value )
+					return false;
+			}
+		},
 		elements :
 		{
Index: /CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js
===================================================================
--- /CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js	(revision 4280)
+++ /CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js	(revision 4281)
@@ -343,5 +343,5 @@
 						{
 							element.filterChildren();
-							if( containsNothingButSpaces( element ) )
+							if ( containsNothingButSpaces(element) )
 								delete element.name;
 						}
@@ -432,9 +432,9 @@
 					},
 					// We'll drop any style sheet, but Firefox conclude
-					// certain styles in it, so they're required to be changed into
-					// inline ones.
+					// certain styles in a single style element, which are
+					// required to be changed into inline ones.
 					'style' : function( element )
 					{
-						if( CKEDITOR.env.gecko && !filters.applyStyleFilter )
+						if( CKEDITOR.env.gecko )
 						{
 							// Grab only the style definition section.
@@ -462,4 +462,8 @@
 											tagName = tagName || '*';
 											className = className.substring( 1, className.length );
+
+											// Reject MS-Word Normal styles.
+											if( className.match( /MsoNormal/ ) )
+												return;
 
 											if( !rules[ tagName ] )
@@ -584,4 +588,9 @@
 
 						element.filterChildren();
+						if( containsNothingButSpaces( element ) )
+						{
+							delete element.name;
+							return;
+						}
 
 						// For IE/Safari: List item bullet type is supposed to be indicated by
