# https://codereview.chromium.org/186683004/patch/20001/30001

--- a/content/browser/renderer_host/web_input_event_aura.cc
+++ b/content/browser/renderer_host/web_input_event_aura.cc
@@ -133,18 +133,27 @@ blink::WebMouseWheelEvent MakeWebMouseWh
   webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
   webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
   webkit_event.hasPreciseScrollingDeltas = true;
-  webkit_event.deltaX = event->x_offset();
-  if (event->x_offset_ordinal() != 0.f && event->x_offset() != 0.f) {
-    webkit_event.accelerationRatioX =
-        event->x_offset_ordinal() / event->x_offset();
+
+  float offset_ordinal_x = 0.f;
+  float offset_ordinal_y = 0.f;
+  if ((event->flags() & ui::EF_SHIFT_DOWN) != 0 && event->x_offset() == 0) {
+    webkit_event.deltaX = event->y_offset();
+    webkit_event.deltaY = 0;
+    offset_ordinal_x = event->y_offset_ordinal();
+    offset_ordinal_y = event->x_offset_ordinal();
+  } else {
+    webkit_event.deltaX = event->x_offset();
+    webkit_event.deltaY = event->y_offset();
+    offset_ordinal_x = event->x_offset_ordinal();
+    offset_ordinal_y = event->y_offset_ordinal();
   }
+
+  if (offset_ordinal_x != 0.f && webkit_event.deltaX != 0.f)
+    webkit_event.accelerationRatioX = offset_ordinal_x / webkit_event.deltaX;
   webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick;
-  webkit_event.deltaY = event->y_offset();
   webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick;
-  if (event->y_offset_ordinal() != 0.f && event->y_offset() != 0.f) {
-    webkit_event.accelerationRatioY =
-        event->y_offset_ordinal() / event->y_offset();
-  }
+  if (offset_ordinal_y != 0.f && webkit_event.deltaY != 0.f)
+    webkit_event.accelerationRatioY = offset_ordinal_y / webkit_event.deltaY;
   return webkit_event;
 }
 
@@ -389,8 +398,15 @@ blink::WebMouseWheelEvent MakeWebMouseWh
   webkit_event.button = blink::WebMouseEvent::ButtonNone;
   webkit_event.modifiers = EventFlagsToWebEventModifiers(event->flags());
   webkit_event.timeStampSeconds = event->time_stamp().InSecondsF();
-  webkit_event.deltaX = event->x_offset();
-  webkit_event.deltaY = event->y_offset();
+
+  if ((event->flags() & ui::EF_SHIFT_DOWN) != 0 && event->x_offset() == 0) {
+    webkit_event.deltaX = event->y_offset();
+    webkit_event.deltaY = 0;
+  } else {
+    webkit_event.deltaX = event->x_offset();
+    webkit_event.deltaY = event->y_offset();
+  }
+
   webkit_event.wheelTicksX = webkit_event.deltaX / kPixelsPerTick;
   webkit_event.wheelTicksY = webkit_event.deltaY / kPixelsPerTick;
 
