diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/devmode.js b/dev/core/src/com/google/gwt/core/ext/linker/impl/devmode.js
index aebf9c7..1b1e354 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/devmode.js
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/devmode.js
@@ -122,8 +122,8 @@
   outer.innerHTML = 
     '<div style="position:absolute;z-index:' + __gwt_glassMessageZIndex-- +
     ';left:50px;top:50px;width:600px;color:#FFF;font-family:verdana;text-align:left;">' +
-    '<div style="font-size:30px;font-weight:bold;">' + simpleEscape(summary) + '</div>' +
-    '<div style="font-size:15px;">' + simpleEscape(details) + '</div>' +
+    '<div style="font-size:30px;font-weight:bold;">' + summary + '</div>' +
+    '<div style="font-size:15px;">' + details + '</div>' +
     '</div>' +
     '<div style="position:absolute;z-index:' + __gwt_glassMessageZIndex-- +
     ';left:0px;top:0px;right:0px;bottom:0px;filter:alpha(opacity=60);opacity:0.6;background-color:#000;"></div>'
@@ -154,7 +154,7 @@
     glassStyle.setExpression("height", "document.documentElement.clientHeight");
   }
 
-  $doc.title = simpleEscape(summary) + " [" + $doc.title + "]";
+  $doc.title = summary + " [" + $doc.title + "]";
 }
 
 
@@ -321,9 +321,11 @@
   if ($errFn) {
     $errFn($moduleName);
   } else {
-    __gwt_displayGlassMessage("Plugin failed to connect to Development Mode server at " + codeServer,
-        "Follow the underlying troubleshooting instructions");
-    loadIframe("http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM");
+    __gwt_displayGlassMessage(
+        "Plugin failed to connect to Development Mode server at " + simpleEscape(codeServer),
+        "Follow the troubleshooting instructions at "
+        + "<a href='http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM'>"
+        + "http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM</a>");
   }
 }
 
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html b/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html
index 4c82193..267fdf7 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/hosted.html
@@ -175,8 +175,8 @@
   outer.innerHTML = 
     '<div style="position:absolute;z-index:' + __gwt_glassMessageZIndex-- +
     ';left:50px;top:50px;width:600px;color:#FFF;font-family:verdana;text-align:left;">' +
-    '<div style="font-size:30px;font-weight:bold;">' + simpleEscape(summary) + '</div>' +
-    '<div style="font-size:15px;">' + simpleEscape(details) + '</div>' +
+    '<div style="font-size:30px;font-weight:bold;">' + summary + '</div>' +
+    '<div style="font-size:15px;">' + details + '</div>' +
     '</div>' +
     '<div style="position:absolute;z-index:' + __gwt_glassMessageZIndex-- +
     ';left:0px;top:0px;right:0px;bottom:0px;filter:alpha(opacity=60);opacity:0.6;background-color:#000;"></div>'
@@ -207,7 +207,7 @@
     glassStyle.setExpression("height", "document.documentElement.clientHeight");
   }
 
-  $doc.title = simpleEscape(summary) + " [" + $doc.title + "]";
+  $doc.title = summary + " [" + $doc.title + "]";
 }
 
 function findPluginObject() {
@@ -294,9 +294,11 @@
       if (errFn) {
         errFn(modName);
       } else {
-        __gwt_displayGlassMessage("Plugin failed to connect to Development Mode server at " + $hosted,
-            "Follow the underlying troubleshooting instructions");
-        loadIframe("http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM");
+        __gwt_displayGlassMessage(
+            "Plugin failed to connect to Development Mode server at " + simpleEscape($hosted),
+            "Follow the troubleshooting instructions at "
+            + "<a href='http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM'>"
+            + "http://code.google.com/p/google-web-toolkit/wiki/TroubleshootingOOPHM</a>");
       }
     }
   }
diff --git a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
index 9a11514..b724854 100644
--- a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
+++ b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
@@ -18,6 +18,7 @@
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.dev.util.Name;
+import com.google.gwt.dev.util.Util;
 import com.google.gwt.dev.util.Name.BinaryName;
 import com.google.gwt.dev.util.log.speedtracer.DevModeEventType;
 import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger;
@@ -614,17 +615,18 @@
       String summary, String entryPointTypeName, Throwable e) throws Throwable {
     StringWriter writer = new StringWriter();
     e.printStackTrace(new PrintWriter(writer));
-    String stackTrace = writer.toString().replaceFirst(
+    String stackTrace = Util.escapeXml(writer.toString()).replaceFirst(
         // (?ms) for regex pattern modifiers MULTILINE and DOTALL
         "(?ms)(Caused by:.+)", "<b>$1</b>");
     String details = "<p>Exception while loading module <b>"
-        + entryPointTypeName + "</b>. See Development Mode for details.</p>"
+        + Util.escapeXml(entryPointTypeName) + "</b>."
+        + " See Development Mode for details.</p>"
         + "<div style='overflow:visisble;white-space:pre;'>" + stackTrace
         + "</div>";
 
     invokeNativeVoid("__gwt_displayGlassMessage", null,
-        new Class[]{String.class, String.class},
-        new Object[]{summary, details});
+        new Class[] { String.class, String.class },
+        new Object[] { Util.escapeXml(summary), details });
   }
 
   private boolean isUserFrame(StackTraceElement element) {
