diff --git a/DEPS b/DEPS
index 8939241..0ba25d1 100644
--- a/DEPS
+++ b/DEPS
@@ -40,7 +40,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': '1a325d25b941ef801b3e9b2c0342da43cf35cdba',
+  'skia_revision': '1fcd10aae43302be86a0c1c42e7a5f085459640f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
index f6dfaaca..addaade6 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
@@ -99,6 +99,7 @@
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
+#include "ui/events/devices/device_data_manager.h"
 #include "ui/events/event_handler.h"
 #include "ui/events/event_utils.h"
 #include "ui/gfx/geometry/rect.h"
@@ -384,6 +385,8 @@
 
   display::Screen::GetScreen()->AddObserver(this);
 
+  ui::DeviceDataManager::GetInstance()->AddObserver(this);
+
   // We need to listen to CLOSE_ALL_BROWSERS_REQUEST but not APP_TERMINATING
   // because/ APP_TERMINATING will never be fired as long as this keeps
   // ref-count. CLOSE_ALL_BROWSERS_REQUEST is safe here because there will be no
@@ -493,6 +496,7 @@
   DBusThreadManager::Get()->GetSessionManagerClient()->RemoveObserver(this);
   CrasAudioHandler::Get()->RemoveAudioObserver(this);
   display::Screen::GetScreen()->RemoveObserver(this);
+  ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
 
   if (login_view_ && login_window_)
     login_window_->RemoveRemovalsObserver(this);
@@ -1018,6 +1022,13 @@
 }
 
 ////////////////////////////////////////////////////////////////////////////////
+// LoginDisplayHostImpl, ui::InputDeviceEventObserver
+void LoginDisplayHostImpl::OnTouchscreenDeviceConfigurationChanged() {
+  if (GetOobeUI())
+    GetOobeUI()->OnDisplayConfigurationChanged();
+}
+
+////////////////////////////////////////////////////////////////////////////////
 // LoginDisplayHostImpl, views::WidgetRemovalsObserver:
 void LoginDisplayHostImpl::OnWillRemoveView(views::Widget* widget,
                                             views::View* view) {
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.h b/chrome/browser/chromeos/login/ui/login_display_host_impl.h
index ed427aa..681655b1 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_impl.h
+++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.h
@@ -28,6 +28,7 @@
 #include "content/public/browser/notification_registrar.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "ui/display/display_observer.h"
+#include "ui/events/devices/input_device_event_observer.h"
 #include "ui/gfx/geometry/rect.h"
 #include "ui/views/widget/widget_removals_observer.h"
 #include "ui/wm/public/scoped_drag_drop_disabler.h"
@@ -51,6 +52,7 @@
                              public chromeos::SessionManagerClient::Observer,
                              public chromeos::CrasAudioHandler::AudioObserver,
                              public display::DisplayObserver,
+                             public ui::InputDeviceEventObserver,
                              public views::WidgetRemovalsObserver,
                              public chrome::MultiUserWindowManager::Observer {
  public:
@@ -122,6 +124,9 @@
   void OnDisplayMetricsChanged(const display::Display& display,
                                uint32_t changed_metrics) override;
 
+  // Overridden from ui::InputDeviceEventObserver
+  void OnTouchscreenDeviceConfigurationChanged() override;
+
   // Overriden from views::WidgetRemovalsObserver:
   void OnWillRemoveView(views::Widget* widget, views::View* view) override;