diff --git a/SOURCES/wacom-pro-pen-3d.patch b/SOURCES/wacom-pro-pen-3d.patch
new file mode 100644
index 0000000..f3d155a
--- /dev/null
+++ b/SOURCES/wacom-pro-pen-3d.patch
@@ -0,0 +1,159 @@
+From 42a526581d1216d835dbbbeab5a7bdb75b349179 Mon Sep 17 00:00:00 2001
+From: Jason Gerecke <killertofu@gmail.com>
+Date: Tue, 10 Oct 2017 09:18:25 -0700
+Subject: [PATCH 1/2] clutter/evdev: Add support for BTN_STYLUS3
+
+BTN_STYLUS3 is defined by the Linux 4.15 kernel and is sent when the
+third button on a stylus is pressed. At the moment, only Wacom's "Pro
+Pen 3D" has three stylus buttons. Pressing this button triggers a button
+8 event to be sent under X11, so we use the same mapping here.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=790033
+---
+ clutter/clutter/evdev/clutter-seat-evdev.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/clutter/clutter/evdev/clutter-seat-evdev.c b/clutter/clutter/evdev/clutter-seat-evdev.c
+index e8524da..f98f85a 100644
+--- a/clutter/clutter/evdev/clutter-seat-evdev.c
++++ b/clutter/clutter/evdev/clutter-seat-evdev.c
+@@ -45,6 +45,10 @@
+ 
+ #define DISCRETE_SCROLL_STEP 10.0
+ 
++#ifndef BTN_STYLUS3
++#define BTN_STYLUS3 0x149 /* Linux 4.15 */
++#endif
++
+ void
+ clutter_seat_evdev_set_libinput_seat (ClutterSeatEvdev     *seat,
+                                       struct libinput_seat *libinput_seat)
+@@ -492,6 +496,10 @@ clutter_seat_evdev_notify_button (ClutterSeatEvdev   *seat,
+       button_nr = CLUTTER_BUTTON_MIDDLE;
+       break;
+ 
++    case 0x149: /* BTN_STYLUS3 */
++      button_nr = 8;
++      break;
++
+     default:
+       /* For compatibility reasons, all additional buttons go after the old 4-7 scroll ones */
+       if (clutter_input_device_get_device_type (input_device) == CLUTTER_TABLET_DEVICE)
+-- 
+2.17.0
+
+
+From c42c5294d0ca3d27001f217974cad72a40ffae60 Mon Sep 17 00:00:00 2001
+From: Jason Gerecke <killertofu@gmail.com>
+Date: Tue, 10 Oct 2017 08:55:41 -0700
+Subject: [PATCH 2/2] backends: Add support for Wacom stylus
+ tertiary-button-action
+
+The tertiary-button-action (see bug 790028) is a place for g-c-c to store
+the action which should be performed when a stylus' third button is pressed.
+Pressing this button is signaled as a BTN_STYLUS3 event from the kernel or
+X11 button 8.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=790033
+---
+ src/backends/meta-input-settings-private.h       |  3 ++-
+ src/backends/meta-input-settings.c               |  5 +++--
+ src/backends/native/meta-input-settings-native.c |  5 ++++-
+ src/backends/x11/meta-input-settings-x11.c       | 10 ++++++++--
+ 4 files changed, 17 insertions(+), 6 deletions(-)
+
+diff --git a/src/backends/meta-input-settings-private.h b/src/backends/meta-input-settings-private.h
+index 605690e..893d4ec 100644
+--- a/src/backends/meta-input-settings-private.h
++++ b/src/backends/meta-input-settings-private.h
+@@ -111,7 +111,8 @@ struct _MetaInputSettingsClass
+                                   ClutterInputDevice         *device,
+                                   ClutterInputDeviceTool     *tool,
+                                   GDesktopStylusButtonAction  primary,
+-                                  GDesktopStylusButtonAction  secondary);
++                                  GDesktopStylusButtonAction  secondary,
++                                  GDesktopStylusButtonAction  tertiary);
+   gboolean (* has_two_finger_scroll) (MetaInputSettings  *settings,
+                                       ClutterInputDevice *device);
+ };
+diff --git a/src/backends/meta-input-settings.c b/src/backends/meta-input-settings.c
+index ec0fc9f..989f9e3 100644
+--- a/src/backends/meta-input-settings.c
++++ b/src/backends/meta-input-settings.c
+@@ -1453,7 +1453,7 @@ update_stylus_buttonmap (MetaInputSettings      *input_settings,
+                          ClutterInputDeviceTool *tool)
+ {
+   MetaInputSettingsClass *input_settings_class;
+-  GDesktopStylusButtonAction primary, secondary;
++  GDesktopStylusButtonAction primary, secondary, tertiary;
+   GSettings *tool_settings;
+ 
+   if (clutter_input_device_get_device_type (device) != CLUTTER_TABLET_DEVICE &&
+@@ -1468,10 +1468,11 @@ update_stylus_buttonmap (MetaInputSettings      *input_settings,
+ 
+   primary = g_settings_get_enum (tool_settings, "button-action");
+   secondary = g_settings_get_enum (tool_settings, "secondary-button-action");
++  tertiary = g_settings_get_enum (tool_settings, "tertiary-button-action");
+ 
+   input_settings_class = META_INPUT_SETTINGS_GET_CLASS (input_settings);
+   input_settings_class->set_stylus_button_map (input_settings, device, tool,
+-                                               primary, secondary);
++                                               primary, secondary, tertiary);
+ }
+ 
+ static void
+diff --git a/src/backends/native/meta-input-settings-native.c b/src/backends/native/meta-input-settings-native.c
+index beb7217..7450725 100644
+--- a/src/backends/native/meta-input-settings-native.c
++++ b/src/backends/native/meta-input-settings-native.c
+@@ -547,12 +547,15 @@ meta_input_settings_native_set_stylus_button_map (MetaInputSettings          *se
+                                                   ClutterInputDevice         *device,
+                                                   ClutterInputDeviceTool     *tool,
+                                                   GDesktopStylusButtonAction  primary,
+-                                                  GDesktopStylusButtonAction  secondary)
++                                                  GDesktopStylusButtonAction  secondary,
++                                                  GDesktopStylusButtonAction  tertiary)
+ {
+   clutter_evdev_input_device_tool_set_button_code (tool, CLUTTER_BUTTON_MIDDLE,
+                                                    action_to_evcode (primary));
+   clutter_evdev_input_device_tool_set_button_code (tool, CLUTTER_BUTTON_SECONDARY,
+                                                    action_to_evcode (secondary));
++  clutter_evdev_input_device_tool_set_button_code (tool, 8, /* Back */
++                                                   action_to_evcode (tertiary));
+ }
+ 
+ static void
+diff --git a/src/backends/x11/meta-input-settings-x11.c b/src/backends/x11/meta-input-settings-x11.c
+index 4867b6b..7d5239f 100644
+--- a/src/backends/x11/meta-input-settings-x11.c
++++ b/src/backends/x11/meta-input-settings-x11.c
+@@ -1031,7 +1031,8 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings          *setti
+                                                ClutterInputDevice         *device,
+                                                ClutterInputDeviceTool     *tool,
+                                                GDesktopStylusButtonAction  primary,
+-                                               GDesktopStylusButtonAction  secondary)
++                                               GDesktopStylusButtonAction  secondary,
++                                               GDesktopStylusButtonAction  tertiary)
+ {
+   MetaDisplay *display = meta_get_display ();
+   MetaBackend *backend = meta_get_backend ();
+@@ -1046,10 +1047,15 @@ meta_input_settings_x11_set_stylus_button_map (MetaInputSettings          *setti
+   xdev = device_ensure_xdevice (device);
+   if (xdev)
+     {
+-      guchar map[3] = {
++      guchar map[8] = {
+         CLUTTER_BUTTON_PRIMARY,
+         action_to_button (primary, CLUTTER_BUTTON_MIDDLE),
+         action_to_button (secondary, CLUTTER_BUTTON_SECONDARY),
++        4,
++        5,
++        6,
++        7,
++        action_to_button (tertiary, 8), /* "Back" */
+       };
+ 
+       XSetDeviceButtonMapping (xdisplay, xdev, map, G_N_ELEMENTS (map));
+-- 
+2.17.0
+
diff --git a/SPECS/mutter.spec b/SPECS/mutter.spec
index af086a5..cb36e25 100644
--- a/SPECS/mutter.spec
+++ b/SPECS/mutter.spec
@@ -11,7 +11,7 @@
 
 Name:          mutter
 Version:       3.26.2
-Release:       13%{?dist}
+Release:       14%{?dist}
 Summary:       Window and compositing manager based on Clutter
 
 License:       GPLv2+
@@ -39,6 +39,7 @@ Patch10: 0001-backends-x11-wacom-pressure-curve-is-a-32-bit-proper.patch
 Patch11:  0001-renderer-x11-Enable-GPU-memory-purge-error-extension.patch
 Patch12:  0001-backends-Monitor-changes-in-active-tools-settings.patch
 Patch13:  0001-clutter-x11-Implement-missing-ClutterInputDevice-pad.patch
+Patch14:  wacom-pro-pen-3d.patch
 
 # http://bugzilla.gnome.org/show_bug.cgi?id=733277
 Patch20: 0008-Add-support-for-quad-buffer-stereo.patch
@@ -215,6 +216,10 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %{_libdir}/pkgconfig/*
 
 %changelog
+* Tue Apr 17 2018 Carlos Garnacho <cgarnach@redhat.com> - 3.26.2-14
+- Add support for Wacom Pro Pen 3D styli
+  Resolves: #1568702
+
 * Fri Feb 23 2018 Carlos Garnacho <cgarnach@redhat.com> - 3.26.2-13
 - Fix pad ring/strip modes
   Resolves: #1543633