Index: /CKEditor/trunk/CHANGES.html
===================================================================
--- /CKEditor/trunk/CHANGES.html	(revision 3858)
+++ /CKEditor/trunk/CHANGES.html	(revision 3859)
@@ -121,5 +121,6 @@
  		<li><a href="http://dev.fckeditor.net/ticket/3916">#3916</a> : Fixed maximize does not enlarge editor width when width is set.</li>
 		<li><a href="http://dev.fckeditor.net/ticket/3839">#3839</a> : Update Scayt plugin to reflect the latest change from SpellChecker.net.</li>
-		<li><a href="http://dev.fckeditor.net/ticket/3742">#3742</a> : Fixed wrong dialog layout for dialogs without tab bar in IE RTL mode .</li>				
+		<li><a href="http://dev.fckeditor.net/ticket/3742">#3742</a> : Fixed wrong dialog layout for dialogs without tab bar in IE RTL mode .</li>
+		<li><a href="http://dev.fckeditor.net/ticket/3671">#3671</a> : Fixed body fixing should be applied to the real type under fake elements.</li>
 	</ul>
 	<h3>
Index: /CKEditor/trunk/_source/core/htmlparser/fragment.js
===================================================================
--- /CKEditor/trunk/_source/core/htmlparser/fragment.js	(revision 3858)
+++ /CKEditor/trunk/_source/core/htmlparser/fragment.js	(revision 3859)
@@ -105,17 +105,27 @@
 			// If the target is the fragment and this element can't go inside
 			// body (if fixForBody).
-			if ( fixForBody && !target.type && !CKEDITOR.dtd.$body[ element.name ] )
-			{
-				var savedCurrent = currentNode;
-
-				// Create a <p> in the fragment.
-				currentNode = target;
-				parser.onTagOpen( fixForBody, {} );
-
-				// The new target now is the <p>.
-				target = currentNode;
-
-				if ( enforceCurrent )
-					currentNode = savedCurrent;
+			if ( fixForBody && !target.type )
+			{
+				var elementName, realElementName;
+				if ( element.attributes
+					 && ( realElementName =
+						  element.attributes[ '_cke_real_element_type' ] ) )
+					elementName = realElementName;
+				else
+					elementName =  element.name;
+				if ( !( elementName in CKEDITOR.dtd.$body ) )
+				{
+					var savedCurrent = currentNode;
+
+					// Create a <p> in the fragment.
+					currentNode = target;
+					parser.onTagOpen( fixForBody, {} );
+
+					// The new target now is the <p>.
+					target = currentNode;
+
+					if ( enforceCurrent )
+						currentNode = savedCurrent;
+				}
 			}
 
