diff --git a/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImpl.java b/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImpl.java
index a772f1d..b009637 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImpl.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/ClippedImageImpl.java
@@ -16,6 +16,7 @@
 package com.google.gwt.user.client.ui.impl;
 
 import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.Unit;
@@ -38,13 +39,13 @@
 public class ClippedImageImpl {
 
   interface DraggableTemplate extends SafeHtmlTemplates {
-    @SafeHtmlTemplates.Template("<img onload='this.__gwtLastUnhandledEvent=\"load\";' src='{0}' "
+    @SafeHtmlTemplates.Template("<img src='{0}' "
         + "style='{1}' border='0' draggable='true'>")
     SafeHtml image(SafeUri clearImage, SafeStyles style);
   }
 
   interface Template extends SafeHtmlTemplates {
-    @SafeHtmlTemplates.Template("<img onload='this.__gwtLastUnhandledEvent=\"load\";' src='{0}' "
+    @SafeHtmlTemplates.Template("<img src='{0}' "
         + "style='{1}' border='0'>")
     SafeHtml image(SafeUri clearImage, SafeStyles style);
   }
@@ -64,9 +65,18 @@
   public Element createStructure(SafeUri url, int left, int top, int width, int height) {
     Element tmp = Document.get().createSpanElement();
     tmp.setInnerSafeHtml(getSafeHtml(url, left, top, width, height));
-    return tmp.getFirstChildElement();
+
+    Element elem = tmp.getFirstChildElement();
+    elem.setPropertyJSO("onload", createOnLoadHandlerFunction());
+    return elem;
   }
 
+  public static native JavaScriptObject createOnLoadHandlerFunction() /*-{
+    return function() {
+      this.__gwtLastUnhandledEvent = 'load';
+    }
+  }-*/;
+
   public Element getImgElement(Image image) {
     return image.getElement();
   }
