diff --git a/examples/example-scrollable.sky b/examples/example-scrollable.sky
new file mode 100644
index 00000000000..e57934d2f4b
--- /dev/null
+++ b/examples/example-scrollable.sky
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
+
+
+
+
diff --git a/framework/sky-scrollable.sky b/framework/sky-scrollable.sky
new file mode 100644
index 00000000000..f950c8b470a
--- /dev/null
+++ b/framework/sky-scrollable.sky
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/viewer/converters/input_event_types.cc b/viewer/converters/input_event_types.cc
index ae3d1bcd9e7..987cd122a22 100644
--- a/viewer/converters/input_event_types.cc
+++ b/viewer/converters/input_event_types.cc
@@ -101,13 +101,17 @@ scoped_ptr BuildWebGestureEvent(
break;
case mojo::EVENT_TYPE_GESTURE_SCROLL_UPDATE:
web_event->type = blink::WebInputEvent::GestureScrollUpdate;
- web_event->data.scrollUpdate.deltaX = event->gesture_data->scroll_x;
- web_event->data.scrollUpdate.deltaY = event->gesture_data->scroll_y;
+ web_event->data.scrollUpdate.deltaX =
+ event->gesture_data->scroll_x / device_pixel_ratio;
+ web_event->data.scrollUpdate.deltaY =
+ event->gesture_data->scroll_y / device_pixel_ratio;
break;
case mojo::EVENT_TYPE_SCROLL_FLING_START:
web_event->type = blink::WebInputEvent::GestureFlingStart;
- web_event->data.flingStart.velocityX = event->gesture_data->velocity_x;
- web_event->data.flingStart.velocityY = event->gesture_data->velocity_y;
+ web_event->data.flingStart.velocityX =
+ event->gesture_data->velocity_x / device_pixel_ratio;
+ web_event->data.flingStart.velocityY =
+ event->gesture_data->velocity_y / device_pixel_ratio;
break;
case mojo::EVENT_TYPE_SCROLL_FLING_CANCEL:
web_event->type = blink::WebInputEvent::GestureFlingCancel;
@@ -150,7 +154,8 @@ scoped_ptr BuildWebGestureEvent(
break;
case mojo::EVENT_TYPE_GESTURE_PINCH_UPDATE:
web_event->type = blink::WebInputEvent::GesturePinchUpdate;
- web_event->data.pinchUpdate.scale = event->gesture_data->scale;
+ web_event->data.pinchUpdate.scale =
+ event->gesture_data->scale / device_pixel_ratio;
break;
default:
NOTIMPLEMENTED() << "Received unexpected event: " << event->action;