diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart
index 510ae50..af5493e 100644
--- a/sdk/lib/_blink/dartium/_blink_dartium.dart
+++ b/sdk/lib/_blink/dartium/_blink_dartium.dart
@@ -8383,4 +8383,4 @@
   static remove(_DOMStringMap, key) native "DOMStringMap_remove_Callback";
 
   static get_keys(_DOMStringMap) native "DOMStringMap_getKeys_Callback";
-}
+}
\ No newline at end of file
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index f447a34..4ac855c 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -26177,7 +26177,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  final int radiusX;
+  final int _webkitRadiusX;
 
   @JSName('webkitRadiusY')
   @DomName('Touch.webkitRadiusY')
@@ -26185,7 +26185,7 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  final int radiusY;
+  final int _webkitRadiusY;
 
   @JSName('webkitRotationAngle')
   @DomName('Touch.webkitRotationAngle')
@@ -26196,17 +26196,43 @@
   final double rotationAngle;
 
 
+// As of Chrome 37, these all changed from long to double.  This code
+// preserves backwards compatability for the time being.
+  int get __clientX => JS('num', '#.clientX', this).round();
+  int get __clientY => JS('num', '#.clientY', this).round();
+  int get __screenX => JS('num', '#.screenX', this).round();
+  int get __screenY => JS('num', '#.screenY', this).round();
+  int get __pageX => JS('num', '#.pageX', this).round();
+  int get __pageY => JS('num', '#.pageY', this).round();
+  int get __webkitRadiusX => JS('num', '#.webkitRadiusX', this).round();
+  int get __webkitRadiusY => JS('num', '#.webkitRadiusY', this).round();
+
   @DomName('Touch.clientX')
   @DomName('Touch.clientY')
-  Point get client => new Point(_clientX, _clientY);
+  Point get client => new Point(__clientX, __clientY);
 
   @DomName('Touch.pageX')
   @DomName('Touch.pageY')
-  Point get page => new Point(_pageX, _pageY);
+  Point get page => new Point(__pageX, __pageY);
 
   @DomName('Touch.screenX')
   @DomName('Touch.screenY')
-  Point get screen => new Point(_screenX, _screenY);
+  Point get screen => new Point(__screenX, __screenY);
+
+  @DomName('Touch.webkitRadiusX')
+  @DocsEditable()
+  @SupportedBrowser(SupportedBrowser.CHROME)
+  @SupportedBrowser(SupportedBrowser.SAFARI)
+  @Experimental()
+  int get radiusX => __webkitRadiusX;
+
+  @DomName('Touch.webkitRadiusY')
+  @DocsEditable()
+  @SupportedBrowser(SupportedBrowser.CHROME)
+  @SupportedBrowser(SupportedBrowser.SAFARI)
+  @Experimental()
+  int get radiusY => __webkitRadiusY;
+
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index 6bd92b2..b8ea186 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -28199,14 +28199,14 @@
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  int get radiusX => _blink.BlinkTouch.$webkitRadiusX_Getter(this);
+  int get _webkitRadiusX => _blink.BlinkTouch.$webkitRadiusX_Getter(this);
 
   @DomName('Touch.webkitRadiusY')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME)
   @SupportedBrowser(SupportedBrowser.SAFARI)
   @Experimental()
-  int get radiusY => _blink.BlinkTouch.$webkitRadiusY_Getter(this);
+  int get _webkitRadiusY => _blink.BlinkTouch.$webkitRadiusY_Getter(this);
 
   @DomName('Touch.webkitRotationAngle')
   @DocsEditable()
@@ -28216,17 +28216,43 @@
   double get rotationAngle => _blink.BlinkTouch.$webkitRotationAngle_Getter(this);
 
 
+// As of Chrome 37, these all changed from long to double.  This code
+// preserves backwards compatability for the time being.
+  int get __clientX => _blink.BlinkTouch.$clientX_Getter(this).round();
+  int get __clientY => _blink.BlinkTouch.$clientY_Getter(this).round();
+  int get __screenX => _blink.BlinkTouch.$screenX_Getter(this).round();
+  int get __screenY => _blink.BlinkTouch.$screenY_Getter(this).round();
+  int get __pageX => _blink.BlinkTouch.$pageX_Getter(this).round();
+  int get __pageY => _blink.BlinkTouch.$pageY_Getter(this).round();
+  int get __webkitRadiusX => _blink.BlinkTouch.$webkitRadiusX_Getter(this).round();
+  int get __webkitRadiusY => _blink.BlinkTouch.$webkitRadiusY_Getter(this).round();
+
   @DomName('Touch.clientX')
   @DomName('Touch.clientY')
-  Point get client => new Point(_clientX, _clientY);
+  Point get client => new Point(__clientX, __clientY);
 
   @DomName('Touch.pageX')
   @DomName('Touch.pageY')
-  Point get page => new Point(_pageX, _pageY);
+  Point get page => new Point(__pageX, __pageY);
 
   @DomName('Touch.screenX')
   @DomName('Touch.screenY')
-  Point get screen => new Point(_screenX, _screenY);
+  Point get screen => new Point(__screenX, __screenY);
+
+  @DomName('Touch.webkitRadiusX')
+  @DocsEditable()
+  @SupportedBrowser(SupportedBrowser.CHROME)
+  @SupportedBrowser(SupportedBrowser.SAFARI)
+  @Experimental()
+  int get radiusX => __webkitRadiusX;
+
+  @DomName('Touch.webkitRadiusY')
+  @DocsEditable()
+  @SupportedBrowser(SupportedBrowser.CHROME)
+  @SupportedBrowser(SupportedBrowser.SAFARI)
+  @Experimental()
+  int get radiusY => __webkitRadiusY;
+
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -28726,10 +28752,10 @@
     if ((blob_OR_source_OR_stream is Blob || blob_OR_source_OR_stream == null)) {
       return _blink.BlinkURL.$_createObjectURL_1_Callback(blob_OR_source_OR_stream);
     }
-    if ((blob_OR_source_OR_stream is MediaSource || blob_OR_source_OR_stream == null)) {
+    if ((blob_OR_source_OR_stream is MediaStream || blob_OR_source_OR_stream == null)) {
       return _blink.BlinkURL.$_createObjectURL_2_Callback(blob_OR_source_OR_stream);
     }
-    if ((blob_OR_source_OR_stream is MediaStream || blob_OR_source_OR_stream == null)) {
+    if ((blob_OR_source_OR_stream is MediaSource || blob_OR_source_OR_stream == null)) {
       return _blink.BlinkURL.$_createObjectURL_3_Callback(blob_OR_source_OR_stream);
     }
     throw new ArgumentError("Incorrect number or type of arguments");
diff --git a/tools/VERSION b/tools/VERSION
index 2f05b9e..5c5246a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 6
 PATCH 0
 PRERELEASE 9
-PRERELEASE_PATCH 5
+PRERELEASE_PATCH 6
diff --git a/tools/dom/scripts/htmlrenamer.py b/tools/dom/scripts/htmlrenamer.py
index ec7fcbb..c066b37 100644
--- a/tools/dom/scripts/htmlrenamer.py
+++ b/tools/dom/scripts/htmlrenamer.py
@@ -329,12 +329,17 @@
   'Storage.setItem',
   'StorageEvent.initStorageEvent',
   'TextEvent.initTextEvent',
+  # TODO(leafp): These have been converted from int to double in Chrome 37.
+  # client, page, and screen were already special cased, adding webKitRadius.
+  # See impl_Touch.darttemplate for impedance matching code
   'Touch.clientX',
   'Touch.clientY',
   'Touch.pageX',
   'Touch.pageY',
   'Touch.screenX',
   'Touch.screenY',
+  'Touch.webkitRadiusX',
+  'Touch.webkitRadiusY',
   'TouchEvent.initTouchEvent',
   'UIEvent.charCode',
   'UIEvent.initUIEvent',
diff --git a/tools/dom/templates/html/impl/impl_Touch.darttemplate b/tools/dom/templates/html/impl/impl_Touch.darttemplate
index d629fd3..d7faec7 100644
--- a/tools/dom/templates/html/impl/impl_Touch.darttemplate
+++ b/tools/dom/templates/html/impl/impl_Touch.darttemplate
@@ -8,15 +8,52 @@
 $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
 $!MEMBERS
 
+// As of Chrome 37, these all changed from long to double.  This code
+// preserves backwards compatability for the time being.
+$if DART2JS
+  int get __clientX => JS('num', '#.clientX', this).round();
+  int get __clientY => JS('num', '#.clientY', this).round();
+  int get __screenX => JS('num', '#.screenX', this).round();
+  int get __screenY => JS('num', '#.screenY', this).round();
+  int get __pageX => JS('num', '#.pageX', this).round();
+  int get __pageY => JS('num', '#.pageY', this).round();
+  int get __webkitRadiusX => JS('num', '#.webkitRadiusX', this).round();
+  int get __webkitRadiusY => JS('num', '#.webkitRadiusY', this).round();
+$else
+  int get __clientX => _blink.BlinkTouch.$clientX_Getter(this).round();
+  int get __clientY => _blink.BlinkTouch.$clientY_Getter(this).round();
+  int get __screenX => _blink.BlinkTouch.$screenX_Getter(this).round();
+  int get __screenY => _blink.BlinkTouch.$screenY_Getter(this).round();
+  int get __pageX => _blink.BlinkTouch.$pageX_Getter(this).round();
+  int get __pageY => _blink.BlinkTouch.$pageY_Getter(this).round();
+  int get __webkitRadiusX => _blink.BlinkTouch.$webkitRadiusX_Getter(this).round();
+  int get __webkitRadiusY => _blink.BlinkTouch.$webkitRadiusY_Getter(this).round();
+$endif
+
   @DomName('Touch.clientX')
   @DomName('Touch.clientY')
-  Point get client => new Point(_clientX, _clientY);
+  Point get client => new Point(__clientX, __clientY);
 
   @DomName('Touch.pageX')
   @DomName('Touch.pageY')
-  Point get page => new Point(_pageX, _pageY);
+  Point get page => new Point(__pageX, __pageY);
 
   @DomName('Touch.screenX')
   @DomName('Touch.screenY')
-  Point get screen => new Point(_screenX, _screenY);
+  Point get screen => new Point(__screenX, __screenY);
+
+  @DomName('Touch.webkitRadiusX')
+  @DocsEditable()
+  @SupportedBrowser(SupportedBrowser.CHROME)
+  @SupportedBrowser(SupportedBrowser.SAFARI)
+  @Experimental()
+  int get radiusX => __webkitRadiusX;
+
+  @DomName('Touch.webkitRadiusY')
+  @DocsEditable()
+  @SupportedBrowser(SupportedBrowser.CHROME)
+  @SupportedBrowser(SupportedBrowser.SAFARI)
+  @Experimental()
+  int get radiusY => __webkitRadiusY;
+
 }
