Index: _source/core/dom/domobject.js
===================================================================
--- _source/core/dom/domobject.js	(revision 5171)
+++ _source/core/dom/domobject.js	(working copy)
@@ -115,6 +115,25 @@
 					delete nativeListeners[ eventName ];
 				}
 			}
+		},
+
+		/** @ignore */
+		removeAllListeners : function()
+		{
+			// Call the original implementation.
+			CKEDITOR.event.prototype.removeAllListeners.apply( this );
+
+			var nativeListeners = this.getCustomData( '_cke_nativeListeners' );
+			for( eventName in nativeListeners)
+			{
+				var listener = nativeListeners[ eventName ];
+				if ( this.$.removeEventListener )
+					this.$.removeEventListener( eventName, listener, false );
+				else if ( this.$.detachEvent )
+					this.$.detachEvent( 'on' + eventName, listener );
+
+				delete nativeListeners[ eventName ];
+			}
 		}
 	};
 })();
Index: _source/core/editor.js
===================================================================
--- _source/core/editor.js	(revision 5171)
+++ _source/core/editor.js	(working copy)
@@ -469,6 +469,10 @@
 				this.updateElement();
 
 			this.theme.destroy( this );
+			delete this.focusManager._.editor;
+			delete this.ui._.editor;
+			this.removeAllListeners();
+
 			this.fire( 'destroy' );
 			CKEDITOR.remove( this );
 			CKEDITOR.fire( 'instanceDestroyed', null, this );
Index: _source/core/event.js
===================================================================
--- _source/core/event.js	(revision 5171)
+++ _source/core/event.js	(working copy)
@@ -317,6 +317,14 @@
 				}
 			},
 
+			removeAllListeners : function()
+			{
+				var events = getPrivate( this );
+				for(e in events)
+				{
+					delete events[ e ];
+				}
+			},
 			/**
 			 * Checks if there is any listener registered to a given event.
 			 * @param {String} eventName The event name.
Index: _source/themes/default/theme.js
===================================================================
--- _source/themes/default/theme.js	(revision 5171)
+++ _source/themes/default/theme.js	(working copy)
@@ -113,7 +113,6 @@
 			var container = CKEDITOR.dom.element.createFromHtml( [
 				'<span' +
 					' id="cke_', name, '"' +
-					' onmousedown="return false;"' +
 					' class="', editor.skinClass, ' cke_editor_', name, '"' +
 					' dir="', editor.lang.dir, '"' +
 					' title="', ( CKEDITOR.env.gecko ? ' ' : '' ), '"' +
@@ -136,6 +135,11 @@
 					'</span>' +
 				'</span>' ].join( '' ) );
 
+			container.on('mousedown', function( event )
+				{
+					event.data.preventDefault();
+				} );
+
 			container.getChild( [1, 0, 0, 0, 0] ).unselectable();
 			container.getChild( [1, 0, 0, 0, 2] ).unselectable();
 
@@ -229,6 +233,7 @@
 		destroy : function( editor )
 		{
 			var container = editor.container;
+			container.removeAllListeners();
 
 			/*
 			 * IE BUG: Removing the editor DOM elements while the selection is inside
@@ -254,12 +259,12 @@
 
 			if ( container )
 				container.remove();
+			delete editor.container;
 
 			if ( editor.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE )
-			{
 				editor.element.show();
-				delete editor.element;
-			}
+
+			delete editor.element;
 		}
 	};
 })() );

