Index: /FCKeditor/trunk/_whatsnew.html
===================================================================
--- /FCKeditor/trunk/_whatsnew.html	(revision 3972)
+++ /FCKeditor/trunk/_whatsnew.html	(revision 3973)
@@ -82,4 +82,6 @@
 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3818">#3818</a>] Fixed layout error
 			in text and background color popups when more colors button is disabled.</li>
+ 		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/3481">#3481</a>] Fixed an issue in
+ 			WebKit where paste actions inside table cells may leak outside of the table cell.</li>
 	</ul>
 	<p>
Index: /FCKeditor/trunk/editor/_source/internals/fck.js
===================================================================
--- /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 3972)
+++ /FCKeditor/trunk/editor/_source/internals/fck.js	(revision 3973)
@@ -958,4 +958,36 @@
 	FCKTools.AddEventListener( FCK.EditorDocument, 'mousedown', _FCK_MouseEventsListener ) ;
 	FCKTools.AddEventListener( FCK.EditorDocument, 'mouseup', _FCK_MouseEventsListener ) ;
+	if ( FCKBrowserInfo.IsSafari )
+	{
+		// #3481: WebKit has a bug with paste where the paste contents may leak
+		// outside table cells. So add padding nodes before and after the paste.
+		FCKTools.AddEventListener( FCK.EditorDocument, 'paste', function( evt )
+		{
+			var range = new FCKDomRange( FCK.EditorWindow );
+			var nodeBefore = FCK.EditorDocument.createTextNode( '\ufeff' );
+			var nodeAfter = FCK.EditorDocument.createElement( 'a' );
+			nodeAfter.id = 'fck_paste_padding';
+			nodeAfter.innerHTML = '&#65279;';
+			range.MoveToSelection();
+			range.DeleteContents();
+
+			// Insert padding nodes.
+			range.InsertNode( nodeBefore );
+			range.Collapse();
+			range.InsertNode( nodeAfter );
+
+			// Move the selection to between the padding nodes.
+			range.MoveToPosition( nodeAfter, 3 );
+			range.Select();
+
+			// Remove the padding nodes after the paste is done.
+			setTimeout( function()
+				{
+					nodeBefore.parentNode.removeChild( nodeBefore );
+					nodeAfter = FCK.EditorDocument.getElementById( 'fck_paste_padding' );
+					nodeAfter.parentNode.removeChild( nodeAfter );
+				}, 0 );
+		} );
+	}
 
 	// Most of the CTRL key combos do not work under Safari for onkeydown and onkeypress (See #1119)
