22
33from .backend_cairo import cairo , FigureCanvasCairo , RendererCairo
44from .backend_qt5 import QtCore , QtGui , _BackendQT5 , FigureCanvasQT
5- from .qt_compat import QT_API
5+ from .qt_compat import QT_API , _setDevicePixelRatioF
66
77
88class FigureCanvasQTCairo (FigureCanvasQT , FigureCanvasCairo ):
@@ -19,8 +19,8 @@ def draw(self):
1919 def paintEvent (self , event ):
2020 self ._update_dpi ()
2121 dpi_ratio = self ._dpi_ratio
22- width = dpi_ratio * self .width ()
23- height = dpi_ratio * self .height ()
22+ width = int ( dpi_ratio * self .width () )
23+ height = int ( dpi_ratio * self .height () )
2424 if (width , height ) != self ._renderer .get_canvas_width_height ():
2525 surface = cairo .ImageSurface (cairo .FORMAT_ARGB32 , width , height )
2626 self ._renderer .set_ctx_from_surface (surface )
@@ -33,9 +33,7 @@ def paintEvent(self, event):
3333 # QImage under PySide on Python 3.
3434 if QT_API == 'PySide' :
3535 ctypes .c_long .from_address (id (buf )).value = 1
36- if hasattr (qimage , 'setDevicePixelRatio' ):
37- # Not available on Qt4 or some older Qt5.
38- qimage .setDevicePixelRatio (dpi_ratio )
36+ _setDevicePixelRatioF (qimage , dpi_ratio )
3937 painter = QtGui .QPainter (self )
4038 painter .eraseRect (event .rect ())
4139 painter .drawImage (0 , 0 , qimage )
0 commit comments