Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 5951)
+++ /CKEditor/trunk/CHANGES.html	(revision 5952)
@@ -132,5 +132,4 @@
 		<li><a href="http://dev.ckeditor.com/ticket/5839">#5839</a> : "Insert row after" was removing the ids of the elements from the clicked row.</li>
 		<li><a href="http://dev.ckeditor.com/ticket/6315">#6315</a> : DIV plugin TT #2885 regression.</li>
-		<li><a href="http://dev.ckeditor.com/ticket/5931">#5931</a> : Unable to change nested font-size styles.</li>
 		<li>Updated the following language files:<ul>
 			<li><a href="http://dev.ckeditor.com/ticket/6246">#6246</a> : Chinese Simplified;</li>
Index: /CKEditor/trunk/_source/plugins/styles/plugin.js
===================================================================
--- /CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 5951)
+++ /CKEditor/trunk/_source/plugins/styles/plugin.js	(revision 5952)
@@ -484,15 +484,4 @@
 				var parent = styleRange.getCommonAncestor();
 
-				var removeList = {
-					styles : {},
-					attrs : {},
-					// Styles cannot be removed.
-					blockedStyles : {},
-					// Attrs cannot be removed.
-					blockedAttrs : {}
-				};
-
-				var attName, styleName, value;
-
 				// Loop through the parents, removing the redundant attributes
 				// from the element to be applied.
@@ -501,24 +490,20 @@
 					if ( parent.getName() == elementName )
 					{
-						for ( attName in def.attributes )
+						for ( var attName in def.attributes )
 						{
-							if ( removeList.blockedAttrs[ attName ] || !( value = parent.getAttribute( styleName ) ) )
-								continue;
-
-							if ( styleNode.getAttribute( attName ) == value )
-								removeList.attrs[ attName ] = 1;
-							else
-								removeList.blockedAttrs[ attName ] = 1;
+							if ( styleNode.getAttribute( attName ) == parent.getAttribute( attName ) )
+								styleNode.removeAttribute( attName );
 						}
 
-						for ( styleName in def.styles )
+						for ( var styleName in def.styles )
 						{
-							if ( removeList.blockedStyles[ styleName ] || !( value = parent.getStyle( styleName ) ) )
-								continue;
-
-							if ( styleNode.getStyle( styleName ) == value )
-								removeList.styles[ styleName ] = 1;
-							else
-								removeList.blockedStyles[ styleName ] = 1;
+							if ( styleNode.getStyle( styleName ) == parent.getStyle( styleName ) )
+								styleNode.removeStyle( styleName );
+						}
+
+						if ( !styleNode.hasAttributes() )
+						{
+							styleNode = null;
+							break;
 						}
 					}
@@ -526,13 +511,4 @@
 					parent = parent.getParent();
 				}
-
-				for ( attName in removeList.attrs )
-					styleNode.removeAttribute( attName );
-
-				for ( styleName in removeList.styles )
-					styleNode.removeStyle( styleName );
-
-				if ( !styleNode.hasAttributes() )
-					styleNode = null;
 
 				if ( styleNode )
@@ -560,13 +536,4 @@
 					if ( !CKEDITOR.env.ie )
 						styleNode.$.normalize();
-				}
-				// Style already inherit from parents, left just to clear up any internal overrides. (#5931)
-				else
-				{
-					styleNode = new CKEDITOR.dom.element( 'span' );
-					styleRange.extractContents().appendTo( styleNode );
-					styleRange.insertNode( styleNode );
-					removeFromInsideElement( this, styleNode );
-					styleNode.remove( true );
 				}
 
@@ -809,5 +776,5 @@
 		while ( ( block = iterator.getNextParagraph() ) )		// Only one =
 		{
-			var newBlock = getElement( this, doc, block );
+			var newBlock = getElement( this, doc );
 			replaceBlock( block, newBlock );
 		}
@@ -1117,5 +1084,5 @@
 	}
 
-	function getElement( style, targetDocument, element )
+	function getElement( style, targetDocument )
 	{
 		var el;
@@ -1131,8 +1098,4 @@
 		// Create the element.
 		el = new CKEDITOR.dom.element( elementName, targetDocument );
-		
-		// #6226: attributes should be copied before the new ones are applied
-		if ( element )
-			element.copyAttributes( el );
 
 		return setupElement( el, style );
@@ -1359,5 +1322,5 @@
 			// Bookmark the range so we can re-select it after processing.
 			bookmarks = selection.createBookmarks(),
-			ranges = selection.getRanges( 1 ),
+			ranges = selection.getRanges( true ),
 			func = remove ? this.removeFromRange : this.applyToRange,
 			range;
