Index: /FCKeditor/trunk/editor/_source/internals/fckxhtml.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fckxhtml.js	(revision 524)
+++ /FCKeditor/trunk/editor/_source/internals/fckxhtml.js	(revision 525)
@@ -174,4 +174,15 @@
 		// Element Node.
 		case 1 :
+			// If we detect a <br> inside a <pre> in Gecko, turn it into a line break instead.
+			// This is a workaround for the Gecko bug here: https://bugzilla.mozilla.org/show_bug.cgi?id=92921
+			if ( FCKBrowserInfo.IsGecko 
+					&& htmlNode.tagName.toLowerCase() == 'br' 
+					&& htmlNode.parentNode.tagName.toLowerCase() == 'pre' )
+			{
+				var val = '\r' ;
+				if ( htmlNode == htmlNode.parentNode.firstChild )
+					val += '\r' ;
+				return FCKXHtml._AppendNode( xmlNode, this.XML.createTextNode( val ) ) ;
+			}
 
 			// Here we found an element that is not the real element, but a
@@ -399,5 +410,5 @@
 			var val = item.nodeValue ;
 			if ( item.nodeType == 3 && i == 0 )
-				node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( "\r\n" + val ) ) ) ;
+				node.appendChild( FCKXHtml.XML.createTextNode( FCKXHtml._AppendSpecialItem( '\r\n' + val ) ) ) ;
 			else
 				FCKXHtml._AppendNode( node, item ) ;
