diff --git a/gwtbootstrap3/src/main/java/org/gwtbootstrap3/client/ui/Modal.java b/gwtbootstrap3/src/main/java/org/gwtbootstrap3/client/ui/Modal.java
index <HASH>..<HASH> 100644
--- a/gwtbootstrap3/src/main/java/org/gwtbootstrap3/client/ui/Modal.java
+++ b/gwtbootstrap3/src/main/java/org/gwtbootstrap3/client/ui/Modal.java
@@ -103,7 +103,7 @@ public class Modal extends Div implements IsClosable {
 
     public Modal() {
         setStyleName(Styles.MODAL);
-        
+
         // We make this the default behavior in order to avoid issues like
         // https://github.com/gwtbootstrap3/gwtbootstrap3/issues/394
         setRemoveOnHide(true);
@@ -130,6 +130,12 @@ public class Modal extends Div implements IsClosable {
     }
 
     @Override
+    protected void onUnload() {
+        super.onUnload();
+        unbindAllHandlers(getElement());
+    }
+
+    @Override
     public void add(final Widget w) {
         // User can supply own ModalHeader
         if (w instanceof ModalHeader) {
@@ -182,7 +188,7 @@ public class Modal extends Div implements IsClosable {
             removeOnHideHandlerReg = addHiddenHandler(new ModalHiddenHandler() {
                 @Override
                 public void onHidden(final ModalHiddenEvent evt) {
-                    unbindAllHandlers(getElement());
+                	// Do logical detach
                     removeFromParent();
                 }
             });
ref #<I>: Moved unbindAllHandlers call into onunload method.