| Index: ui/events/x/events_x.cc | 
| diff --git a/ui/events/x/events_x.cc b/ui/events/x/events_x.cc | 
| index 9fec9df2bf9bcf18d5f9947a3d96e0c4229a8662..1ab01710573a881e01fd80015f843f12a3a4fcc5 100644 | 
| --- a/ui/events/x/events_x.cc | 
| +++ b/ui/events/x/events_x.cc | 
| @@ -434,8 +434,24 @@ gfx::Point EventLocationFromNative(const base::NativeEvent& native_event) { | 
| case GenericEvent: { | 
| XIDeviceEvent* xievent = | 
| static_cast<XIDeviceEvent*>(native_event->xcookie.data); | 
| -      return gfx::Point(static_cast<int>(xievent->event_x), | 
| -                        static_cast<int>(xievent->event_y)); | 
| +      float x = xievent->event_x; | 
| +      float y = xievent->event_y; | 
| +#if defined(OS_CHROMEOS) | 
| +      ui::EventType type = ui::EventTypeFromNative(native_event); | 
| +      switch (type) { | 
| +        case ui::ET_TOUCH_MOVED: | 
| +        case ui::ET_TOUCH_PRESSED: | 
| +        case ui::ET_TOUCH_CANCELLED: | 
| +        case ui::ET_TOUCH_RELEASED: { | 
| +          ui::DeviceDataManager::GetInstance()->ApplyTouchCTM( | 
| +              xievent->deviceid, &x, &y); | 
| +          break; | 
| +        } | 
| +        default: | 
| +          break; | 
| +      } | 
| +#endif  // defined(OS_CHROMEOS) | 
| +      return gfx::Point(static_cast<int>(x), static_cast<int>(y)); | 
| } | 
| } | 
| return gfx::Point(); | 
|  |