text: import sys
  
  import numpy as np
  
  from . import _backend_tk
  from .backend_cairo import cairo, FigureCanvasCairo, RendererCairo
  from ._backend_tk import _BackendTk, FigureCanvasTk
  
  
  class FigureCanvasTkCairo(FigureCanvasCairo, FigureCanvasTk):
      def __init__(self, *args, **kwargs):
          super(FigureCanvasTkCairo, self).__init__(*args, **kwargs)
          self._renderer = RendererCairo(self.figure.dpi)
  
      def draw(self):
          width = int(self.figure.bbox.width)
          height = int(self.figure.bbox.height)
          surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
          self._renderer.set_ctx_from_surface(surface)
          self._renderer.set_width_height(width, height)
          self.figure.draw(self._renderer)
          buf = np.reshape(surface.get_data(), (height, width, 4))
          _backend_tk.blit(
              self._tkphoto, buf,
              (2, 1, 0, 3) if sys.byteorder == "little" else (1, 2, 3, 0))
          self._master.update_idletasks()
  
  
  @_BackendTk.export
  class _BackendTkCairo(_BackendTk):
      FigureCanvas = FigureCanvasTkCairo
  