Index: /CKEditor/branches/features/pasting/_source/core/htmlparser/filter.js
===================================================================
--- /CKEditor/branches/features/pasting/_source/core/htmlparser/filter.js	(revision 4460)
+++ /CKEditor/branches/features/pasting/_source/core/htmlparser/filter.js	(revision 4461)
@@ -77,8 +77,8 @@
 				// well as those set to the generic $ name. So, add both to an
 				// array and process them in a small loop.
-				var filters = [ this._.elements[ element.name ], this._.elements.$ ],
+				var filters = [ this._.elements[ '^' ], this._.elements[ element.name ], this._.elements.$ ],
 					filter, ret;
 
-				for ( var i = 0 ; i < 2 ; i++ )
+				for ( var i = 0 ; i < 3 ; i++ )
 				{
 					filter = filters[ i ];
@@ -93,6 +93,6 @@
 							return this.onElement( ret );
 
-						// The element has been dismissed by one of the filters.
-						if( !element.name )
+						// The none-root element has been dismissed by one of the filters.
+						if( element.parent && !element.name )
 							break;
 					}
Index: /CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js
===================================================================
--- /CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js	(revision 4460)
+++ /CKEditor/branches/features/pasting/_source/plugins/pastefromword/plugin.js	(revision 4461)
@@ -256,18 +256,22 @@
 				{
 					element.name = 'cke:li';
-					attrs.style = CKEDITOR.plugins.pastefromword.filters.stylesFilter(
-					[
-						// Text-indent is not representing list item level any more.
-						[ 'text-indent' ],
-						[ 'line-height' ],
-						// Resolve indent level from 'margin-left' style.
-						[ /^margin(:?-left)?$/, null, function( value )
-						{
-							// Deal with short-hand form. 
-							var values = value.split( ' ' );
-							value = values[ 3 ] || values[ 1 ] || values [ 0 ];
-							attrs[ 'cke:indent' ] = parseInt( value );
-						} ]
-					] )( attrs.style, element ) || '' ;
+
+					if( attrs.style )
+					{
+						attrs.style = CKEDITOR.plugins.pastefromword.filters.stylesFilter(
+						[
+							// Text-indent is not representing list item level any more.
+							[ 'text-indent' ],
+							[ 'line-height' ],
+							// Resolve indent level from 'margin-left' value.
+							[ /^margin(:?-left)?$/, null, function( value )
+							{
+								// Be able to deal with component/short-hand form style.
+								var values = value.split( ' ' );
+								value = values[ 3 ] || values[ 1 ] || values [ 0 ];
+								attrs[ 'cke:indent' ] = parseInt( value );
+							} ]
+						] )( attrs.style, element ) || '' ;
+					}
 
 					// Inherit list-type-style from bullet.
@@ -461,13 +465,16 @@
 				elements :
 				{
+					'^' : function( element )
+					{
+						// Transform CSS style declaration to inline style.
+						var applyStyleFilter;
+						if ( CKEDITOR.env.gecko && ( applyStyleFilter = filters.applyStyleFilter ) )
+							applyStyleFilter( element );
+					},
+
 					$ : function( element )
 					{
 						var tagName = element.name || '',
 							attrs = element.attributes;
-
-						// Firefox: adding inline style. 
-						var applyStyleFilter;
-						if( CKEDITOR.env.gecko && ( applyStyleFilter = filters.applyStyleFilter ) )
-							applyStyleFilter( element );
 
 						// Convert length unit of width/height on blocks to
@@ -598,5 +605,5 @@
 							var styleDefSection = element.onlyChild().value.match( /\/\* Style Definitions \*\/([\s\S]*?)\/\*/ ),
 								styleDefText = styleDefSection && styleDefSection[ 1 ],
-								rules = {}; // Storing the parsed result.   
+								rules = {}; // Storing the parsed result.
 
 							if( styleDefText )
