refer: https://github.com/matplotlib/matplotlib/commit/014df7f0eb3139f19641e4f92d49876f7dc2b371

diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py
index 359b8fd..0a6979a 100644
--- a/lib/matplotlib/backends/backend_gtk3.py
+++ b/lib/matplotlib/backends/backend_gtk3.py
@@ -1,6 +1,6 @@
 from __future__ import (absolute_import, division, print_function,
                         unicode_literals)
-
+import functools
 import six
 
 import logging
@@ -28,14 +28,25 @@ backend_version = "%s.%s.%s" % (
 # see http://groups.google.com/groups?q=screen+dpi+x11&hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=7077.26e81ad5%40swift.cs.tcd.ie&rnum=5 for some info about screen dpi
 PIXELS_PER_INCH = 96
 
-cursord = {
-    cursors.MOVE          : Gdk.Cursor.new(Gdk.CursorType.FLEUR),
-    cursors.HAND          : Gdk.Cursor.new(Gdk.CursorType.HAND2),
-    cursors.POINTER       : Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR),
-    cursors.SELECT_REGION : Gdk.Cursor.new(Gdk.CursorType.TCROSS),
-    cursors.WAIT          : Gdk.Cursor.new(Gdk.CursorType.WATCH),
-    }
-
+# module-level deprecations.
+@functools.lru_cache(None)
+def __getattr__(name):
+    if name == "cursord":
+        _api.warn_deprecated("3.5", name=name)
+        try:
+            new_cursor = functools.partial(
+                Gdk.Cursor.new_from_name, Gdk.Display.get_default())
+            return {
+                Cursors.MOVE:          new_cursor("move"),
+                Cursors.HAND:          new_cursor("pointer"),
+                Cursors.POINTER:       new_cursor("default"),
+                Cursors.SELECT_REGION: new_cursor("crosshair"),
+                Cursors.WAIT:          new_cursor("wait"),
+            }
+        except TypeError as exc:
+            return {}
+    else:
+        raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
 
 class TimerGTK3(TimerBase):
     '''
