diff --git a/src/Wt/WApplication.C b/src/Wt/WApplication.C
index 57fa21e..a5629c3 100644
--- a/src/Wt/WApplication.C
+++ b/src/Wt/WApplication.C
@@ -148,8 +148,10 @@ WApplication::WApplication(const WEnvironment& env
 
       if (selectIE7)
 	addMetaHeader(MetaHttpHeader, "X-UA-Compatible", "IE=7");
-    } else
+    } else if (environment().agent() == WEnvironment::IE9)
       addMetaHeader(MetaHttpHeader, "X-UA-Compatible", "IE=9");
+    else
+      addMetaHeader(MetaHttpHeader, "X-UA-Compatible", "IE=edge");
   }
 
   domRoot_ = new WContainerWidget();
diff --git a/src/Wt/WEnvironment b/src/Wt/WEnvironment
index 2d06dda..34a8d39 100644
--- a/src/Wt/WEnvironment
+++ b/src/Wt/WEnvironment
@@ -86,7 +86,8 @@ public:
     IE6 = 1001,                 //!< Internet Explorer 6
     IE7 = 1002,                 //!< Internet Explorer 7
     IE8 = 1003,                 //!< Internet Explorer 8
-    IE9 = 1004,                 //!< Internet Explorer 9 or later
+    IE9 = 1004,                 //!< Internet Explorer 9
+    IE10 = 1005,                //!< Internet Explorer 10 or later
     Opera = 3000,               //!< Opera
     Opera10 = 3010,             //!< Opera 10 or later
     WebKit = 4000,              //!< WebKit
diff --git a/src/Wt/WEnvironment.C b/src/Wt/WEnvironment.C
index 2c6ea8f..e153577 100644
--- a/src/Wt/WEnvironment.C
+++ b/src/Wt/WEnvironment.C
@@ -244,8 +244,10 @@ void WEnvironment::setUserAgent(const std::string& userAgent)
     agent_ = IE7;
   else if (userAgent_.find("MSIE 8.") != std::string::npos)
     agent_ = IE8;
-  else if (userAgent_.find("MSIE") != std::string::npos)
+  else if (userAgent_.find("MSIE 9.") != std::string::npos)
     agent_ = IE9;
+  else if (userAgent_.find("MSIE") != std::string::npos)
+    agent_ = IE10;
 
   if (userAgent_.find("Opera") != std::string::npos) {
     agent_ = Opera;
diff --git a/src/Wt/WPaintedWidget.C b/src/Wt/WPaintedWidget.C
index 2053737..eb2496a 100644
--- a/src/Wt/WPaintedWidget.C
+++ b/src/Wt/WPaintedWidget.C
@@ -186,7 +186,7 @@ WPaintedWidget::Method WPaintedWidget::getMethod() const
     // on older browsers, inline svg is only supported in xhtml mode. HTML5
     // also allows inline svg
     // Safari 5 and Opera 11 do not seem to support inline svg in html mode
-    method = HtmlCanvas;
+    method = env.javaScript() ? HtmlCanvas : PngImage;
   else 
     if (!env.javaScript())
       method = InlineSvgVml;
@@ -248,6 +248,8 @@ bool WPaintedWidget::createPainter()
 
   if (method == InlineSvgVml)
     painter_ = new WWidgetVectorPainter(this, WWidgetPainter::InlineSvg);
+  else if (method == PngImage)
+    painter_ = new WWidgetRasterPainter(this);
   else
     painter_ = new WWidgetCanvasPainter(this);
 
diff --git a/src/web/WebRenderer.C b/src/web/WebRenderer.C
index 0dfef75..e13eb69 100644
--- a/src/web/WebRenderer.C
+++ b/src/web/WebRenderer.C
@@ -285,7 +285,7 @@ void WebRenderer::setPageVars(FileServe& page)
 		"xmlns=\"http://www.w3.org/1999/xhtml\"" + htmlAttr);
     page.setVar("METACLOSE", "/>");
   } else {
-    if (session_.env().agentIsIE())
+    if (session_.env().agentIsIElt(10))
       page.setVar("HTMLATTRIBUTES",
 		  "xmlns:v=\"urn:schemas-microsoft-com:vml\""
 		  " lang=\"en\" dir=\"ltr\"" + htmlAttr);
@@ -1813,9 +1813,12 @@ std::string WebRenderer::headDeclarations() const
 	  result << "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=7\"";
 	  closeSpecial(result, xhtml);
 	}
-      } else {
+      } else if (session_.env().agentIsIElt(10)) {
 	result << "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"";
 	closeSpecial(result, xhtml);
+      } else {
+	result << "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"";
+	closeSpecial(result, xhtml);
       }
     }
 
diff --git a/src/web/skeleton/Boot.html b/src/web/skeleton/Boot.html
index 6a1c5dc..4525c72 100644
--- a/src/web/skeleton/Boot.html
+++ b/src/web/skeleton/Boot.html
@@ -3,7 +3,7 @@ _$_DOCTYPE_$_
 <head>
 _$_HEADDECLARATIONS_$_
 <title></title>
-<!--[if gte IE 6]>
+<!--[if (gte IE 6)&(lt IE 10)]>
 <style type="text/css">
 v\:* { behavior:url(#default#VML); position:absolute }
 </style>
@@ -31,7 +31,7 @@ _$_$if_BOOT_STYLE_$_()
 <link href="_$_BOOT_STYLE_URL_$_" rel="stylesheet"
       type="text/css" _$_METACLOSE_$_
 _$_$endif_$_()
-<!--[if gte IE 6]>
+<!--[if (gte IE 6)&(lt IE 10)]>
 <script type="text/javascript">
 document.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML");
 </script>
diff --git a/src/web/skeleton/Hybrid.html b/src/web/skeleton/Hybrid.html
index 39121b9..791166f 100644
--- a/src/web/skeleton/Hybrid.html
+++ b/src/web/skeleton/Hybrid.html
@@ -3,7 +3,7 @@ _$_DOCTYPE_$_
 <head>
 _$_HEADDECLARATIONS_$_
 <title>_$_TITLE_$_</title>
-<!--[if gte IE 6]>
+<!--[if (gte IE 6)&(lt IE 10)]>
 <style type="text/css">
 v\:* { behavior: url(#default#VML);position:absolute }
 </style>
diff --git a/src/web/skeleton/Plain.html b/src/web/skeleton/Plain.html
index 2c6396a..b796da4 100644
--- a/src/web/skeleton/Plain.html
+++ b/src/web/skeleton/Plain.html
@@ -3,7 +3,7 @@ _$_DOCTYPE_$_
 <head>
 _$_HEADDECLARATIONS_$_
 <title>_$_TITLE_$_</title>
-<!--[if gte IE 6]>
+<!--[if (gte IE 6)&(lt IE 10)]>
 <style type="text/css">
 v\:* { behavior: url(#default#VML);position:absolute }
 </style>
