File 2039-bunch-py310-fixes.patch of Package python-wxPython

From 173d0796810bb65de9bdfdc6941d24a04628f6c2 Mon Sep 17 00:00:00 2001
From: Scott Talbert <swt@techie.net>
Date: Wed, 1 Dec 2021 14:19:00 -0500
Subject: [PATCH] Fix a bunch of Python 3.10 issues with pure-Python classes
 and demos

In Python 3.10, a change[1] was implemented where extension functions
that take integer arguments will no longer silently accept non-integer
arguments (e.g., floats) that can only be converted to integers with a
loss of precision.  This PR fixes most of these issues in the pure-Python
classes and demos by explicitly converting the parameters to int before
passing them to wxWidgets.  There is loss of precision, but this was
happening before (automatically) anyway as most wxWidgets DeviceContext
functions operate using integers.

Additionally, the PR fixes a few sizing issues, mostly with SpinCtrls being
too small on GTK3.

This is an example of the relevant exception:
Traceback (most recent call last):
  File "/usr/lib64/python3.10/site-packages/wx/lib/agw/pygauge.py", line 355, in OnPaint
    r.width = w
TypeError: 'float' object cannot be interpreted as an integer

Fixes #2038.

[1] https://bugs.python.org/issue37999
---
 demo/GridLabelRenderer.py               |    4 -
 demo/Mask.py                            |    4 -
 demo/Overlay.py                         |    1 
 demo/PenAndBrushStyles.py               |    2 
 demo/PopupWindow.py                     |    2 
 demo/PrintFramework.py                  |    2 
 demo/PropertyGrid.py                    |    2 
 demo/Sizers.py                          |    2 
 demo/UIActionSimulator.py               |    2 
 demo/agw/AUI.py                         |   32 ++++-----
 demo/agw/MacLargeDemo.py                |    4 -
 demo/agw/PeakMeter.py                   |    6 -
 demo/agw/PersistentControls.py          |    2 
 demo/agw/RibbonBar.py                   |    2 
 demo/agw/SpeedMeter.py                  |    2 
 demo/agw/SuperToolTip.py                |    3 
 demo/agw/ThumbDemoConfig.py             |    1 
 demo/agw/UltimateReportDemo.py          |    8 +-
 demo/agw/Windows7Explorer_Contents.py   |   16 ++--
 demo/agw/ZoomBar.py                     |    2 
 wx/lib/agw/advancedsplash.py            |    2 
 wx/lib/agw/aui/auibook.py               |    4 -
 wx/lib/agw/balloontip.py                |    4 -
 wx/lib/agw/flatmenu.py                  |   62 +++++++++---------
 wx/lib/agw/flatnotebook.py              |   10 +-
 wx/lib/agw/floatspin.py                 |    2 
 wx/lib/agw/gradientbutton.py            |    8 +-
 wx/lib/agw/hypertreelist.py             |    2 
 wx/lib/agw/knobctrl.py                  |   12 +--
 wx/lib/agw/labelbook.py                 |   32 ++++-----
 wx/lib/agw/peakmeter.py                 |    2 
 wx/lib/agw/pygauge.py                   |    4 -
 wx/lib/agw/ribbon/art_aui.py            |   22 +++---
 wx/lib/agw/ribbon/art_internal.py       |   12 +--
 wx/lib/agw/ribbon/art_msw.py            |   88 ++++++++++++-------------
 wx/lib/agw/ribbon/bar.py                |    4 -
 wx/lib/agw/ribbon/buttonbar.py          |    6 -
 wx/lib/agw/ribbon/gallery.py            |    8 +-
 wx/lib/agw/ribbon/panel.py              |   16 ++--
 wx/lib/agw/ribbon/toolbar.py            |    2 
 wx/lib/agw/scrolledthumbnail.py         |   24 +++---
 wx/lib/agw/shapedbutton.py              |   10 +-
 wx/lib/agw/speedmeter.py                |   70 +++++++++++---------
 wx/lib/agw/supertooltip.py              |   20 ++---
 wx/lib/agw/toasterbox.py                |    4 -
 wx/lib/agw/ultimatelistctrl.py          |   20 ++---
 wx/lib/agw/xlsgrid.py                   |    4 -
 wx/lib/agw/zoombar.py                   |   10 +-
 wx/lib/analogclock/analogclock.py       |    2 
 wx/lib/analogclock/helpers.py           |   22 +++---
 wx/lib/analogclock/setup.py             |    6 -
 wx/lib/buttons.py                       |   10 +-
 wx/lib/colourchooser/pycolourchooser.py |    4 -
 wx/lib/colourchooser/pypalette.py       |    2 
 wx/lib/floatcanvas/FCObjects.py         |    8 +-
 wx/lib/gizmos/ledctrl.py                |    8 +-
 wx/lib/imagebrowser.py                  |    4 -
 wx/lib/ogl/basic.py                     |   10 +-
 wx/lib/ogl/bmpshape.py                  |    2 
 wx/lib/ogl/composit.py                  |    4 -
 wx/lib/ogl/divided.py                   |    2 
 wx/lib/ogl/lines.py                     |    2 
 wx/lib/ogl/oglmisc.py                   |    4 -
 wx/lib/plot/examples/demo.py            |    4 -
 wx/lib/plot/plotcanvas.py               |  110 ++++++++++++++++----------------
 wx/lib/plot/polyobjects.py              |   22 +++---
 wx/lib/popupctl.py                      |    2 
 wx/lib/scrolledpanel.py                 |    2 
 wx/lib/throbber.py                      |    6 -
 wx/lib/ticker.py                        |    4 -
 70 files changed, 408 insertions(+), 395 deletions(-)

--- a/demo/GridLabelRenderer.py
+++ b/demo/GridLabelRenderer.py
@@ -46,8 +46,8 @@ class MyCornerLabelRenderer(glr.GridLabe
         self._bmp = images.Smiles.GetBitmap()
 
     def Draw(self, grid, dc, rect, rc):
-        x = rect.left + (rect.width - self._bmp.GetWidth()) / 2
-        y = rect.top + (rect.height - self._bmp.GetHeight()) / 2
+        x = rect.left + (rect.width - self._bmp.GetWidth()) // 2
+        y = rect.top + (rect.height - self._bmp.GetHeight()) // 2
         dc.DrawBitmap(self._bmp, x, y, True)
 
 
--- a/demo/Mask.py
+++ b/demo/Mask.py
@@ -90,9 +90,9 @@ class TestMaskWindow(wx.ScrolledWindow):
 
         for text, code in logicList:
             x,y = 120+150*(i%4), 20+100*(i/4)
-            dc.DrawText(text, x, y-20)
+            dc.DrawText(text, x, int(y-20))
             mdc.SelectObject(self.bmp_withcolourmask)
-            dc.Blit(x,y, cx,cy, mdc, 0,0, code, True)
+            dc.Blit(x,int(y), cx,cy, mdc, 0,0, code, True)
             i = i + 1
 
 
--- a/demo/Overlay.py
+++ b/demo/Overlay.py
@@ -56,7 +56,6 @@ class TestPanel(wx.Panel):
         self.penstylesCombo.SetToolTip('Pen Style')
 
         self.overlayPenWidth = wx.SpinCtrl(self, -1, value='',
-                                           size=(75, -1),
                                            style=wx.SP_ARROW_KEYS,
                                            min=1, max=24, initial=1)
         self.overlayPenWidth.SetToolTip('Pen Width')
--- a/demo/PenAndBrushStyles.py
+++ b/demo/PenAndBrushStyles.py
@@ -100,7 +100,7 @@ class PenPanel(BasePanel):
 
         dc.SetPen(pen)
         y = labelHeight + (height - labelHeight)/2
-        dc.DrawLine(5, y, width-5, y)
+        dc.DrawLine(5, int(y), width-5, int(y))
 
 
 class BrushPanel(BasePanel):
--- a/demo/PopupWindow.py
+++ b/demo/PopupWindow.py
@@ -89,7 +89,7 @@ class TestTransientPopup(wx.PopupTransie
                           "(or its first child) loses focus in \n"
                           "any other way.")
         btn = wx.Button(panel, -1, "Press Me")
-        spin = wx.SpinCtrl(panel, -1, "Hello", size=(100,-1))
+        spin = wx.SpinCtrl(panel, -1, "Hello")
         btn.Bind(wx.EVT_BUTTON, self.OnButton)
 
         sizer = wx.BoxSizer(wx.VERTICAL)
--- a/demo/PrintFramework.py
+++ b/demo/PrintFramework.py
@@ -81,7 +81,7 @@ class MyPrintout(wx.Printout):
 
         #-------------------------------------------
         self.canvas.DoDrawing(dc, True)
-        dc.DrawText("Page: %d" % page, marginX/2, maxY-marginY)
+        dc.DrawText("Page: %d" % page, marginX//2, maxY-marginY)
 
         return True
 
--- a/demo/PropertyGrid.py
+++ b/demo/PropertyGrid.py
@@ -150,7 +150,7 @@ class SizeProperty(wxpg.PGProperty):
         """ Utility convert arbitrary value to a real wx.Size.
         """
         import collections
-        if isinstance(value, collections.Sequence) or hasattr(value, '__getitem__'):
+        if isinstance(value, collections.abc.Sequence) or hasattr(value, '__getitem__'):
             value = wx.Size(*value)
         return value
 
--- a/demo/Sizers.py
+++ b/demo/Sizers.py
@@ -45,7 +45,7 @@ class SampleWindow(wx.Window):
         dc = wx.PaintDC(self)
         w,h = dc.GetTextExtent(self.text)
         dc.Clear()
-        dc.DrawText(self.text, (sz.width-w)/2, (sz.height-h)/2)
+        dc.DrawText(self.text, (sz.width-w)//2, (sz.height-h)//2)
 
     def OnSize(self, evt):
         self.Refresh()
--- a/demo/UIActionSimulator.py
+++ b/demo/UIActionSimulator.py
@@ -88,7 +88,7 @@ class TestPanel(wx.Panel):
 
     def _setNextKeyEvent(self):
         evtType, key, modifiers, milli = self._playbackEvents.pop(0)
-        milli = max(milli/2, 1) # play back faster than it was recorded
+        milli = max(milli//2, 1) # play back faster than it was recorded
         print(evtType, key, modifiers, milli)
         wx.CallLater(milli, self._playbackKey, evtType, key, modifiers)
 
--- a/demo/agw/AUI.py
+++ b/demo/agw/AUI.py
@@ -393,7 +393,7 @@ class SizeReportCtrl(wx.Control):
         dc.SetPen(wx.LIGHT_GREY_PEN)
         dc.DrawLine(0, 0, size.x, size.y)
         dc.DrawLine(0, size.y, size.x, 0)
-        dc.DrawText(s, (size.x-w)/2, (size.y-height*5)/2)
+        dc.DrawText(s, (size.x-w)//2, (size.y-height*5)//2)
 
         if self._mgr:
 
@@ -401,19 +401,19 @@ class SizeReportCtrl(wx.Control):
 
             s = "Layer: %d"%pi.dock_layer
             w, h = dc.GetTextExtent(s)
-            dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*1))
+            dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*1))
 
             s = "Dock: %d Row: %d"%(pi.dock_direction, pi.dock_row)
             w, h = dc.GetTextExtent(s)
-            dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*2))
+            dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*2))
 
             s = "Position: %d"%pi.dock_pos
             w, h = dc.GetTextExtent(s)
-            dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*3))
+            dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*3))
 
             s = "Proportion: %d"%pi.dock_proportion
             w, h = dc.GetTextExtent(s)
-            dc.DrawText(s, (size.x-w)/2, ((size.y-(height*5))/2)+(height*4))
+            dc.DrawText(s, (size.x-w)//2, ((size.y-(height*5))//2)+(height*4))
 
 
     def OnEraseBackground(self, event):
@@ -435,7 +435,7 @@ class SettingsPanel(wx.Panel):
 
         s1 = wx.BoxSizer(wx.HORIZONTAL)
         self._border_size = wx.SpinCtrl(self, ID_PaneBorderSize, "%d"%frame.GetDockArt().GetMetric(aui.AUI_DOCKART_PANE_BORDER_SIZE),
-                                        wx.DefaultPosition, wx.Size(50, 20), wx.SP_ARROW_KEYS, 0, 100,
+                                        wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100,
                                         frame.GetDockArt().GetMetric(aui.AUI_DOCKART_PANE_BORDER_SIZE))
         s1.Add((1, 1), 1, wx.EXPAND)
         s1.Add(wx.StaticText(self, -1, "Pane Border Size:"))
@@ -445,7 +445,7 @@ class SettingsPanel(wx.Panel):
 
         s2 = wx.BoxSizer(wx.HORIZONTAL)
         self._sash_size = wx.SpinCtrl(self, ID_SashSize, "%d"%frame.GetDockArt().GetMetric(aui.AUI_DOCKART_SASH_SIZE), wx.DefaultPosition,
-                                      wx.Size(50, 20), wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_SASH_SIZE))
+                                      wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_SASH_SIZE))
         s2.Add((1, 1), 1, wx.EXPAND)
         s2.Add(wx.StaticText(self, -1, "Sash Size:"))
         s2.Add(self._sash_size)
@@ -454,7 +454,7 @@ class SettingsPanel(wx.Panel):
 
         s3 = wx.BoxSizer(wx.HORIZONTAL)
         self._caption_size = wx.SpinCtrl(self, ID_CaptionSize, "%d"%frame.GetDockArt().GetMetric(aui.AUI_DOCKART_CAPTION_SIZE),
-                                         wx.DefaultPosition, wx.Size(50, 20), wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_CAPTION_SIZE))
+                                         wx.DefaultPosition, wx.DefaultSize, wx.SP_ARROW_KEYS, 0, 100, frame.GetDockArt().GetMetric(aui.AUI_DOCKART_CAPTION_SIZE))
         s3.Add((1, 1), 1, wx.EXPAND)
         s3.Add(wx.StaticText(self, -1, "Caption Size:"))
         s3.Add(self._caption_size)
@@ -807,9 +807,9 @@ class ProgressGauge(wx.Window):
 
         # We take the percent way of the colour from colour -> white
         i = percent
-        r = colour.Red() + ((i*rd*100)/high)/100
-        g = colour.Green() + ((i*gd*100)/high)/100
-        b = colour.Blue() + ((i*bd*100)/high)/100
+        r = colour.Red() + ((i*rd*100)//high)//100
+        g = colour.Green() + ((i*gd*100)//high)//100
+        b = colour.Blue() + ((i*bd*100)//high)//100
 
         return wx.Colour(r, g, b)
 
@@ -826,10 +826,10 @@ class ProgressGauge(wx.Window):
         x, y, width, height = clientRect
         x, width = self._pos, interval
 
-        gradientRect.SetHeight(gradientRect.GetHeight()/2)
+        gradientRect.SetHeight(gradientRect.GetHeight()//2)
         topStart, topEnd = self._topStartColour, self._topEndColour
 
-        rc1 = wx.Rect(x, y, width, height/2)
+        rc1 = wx.Rect(int(x), y, int(width), height//2)
         path1 = self.GetPath(gc, rc1, 8)
         br1 = gc.CreateLinearGradientBrush(x, y, x, y+height/2, topStart, topEnd)
         gc.SetBrush(br1)
@@ -845,14 +845,14 @@ class ProgressGauge(wx.Window):
 
         bottomStart, bottomEnd = self._bottomStartColour, self._bottomEndColour
 
-        rc3 = wx.Rect(x, y+height/2, width, height/2)
+        rc3 = wx.Rect(int(x), y+height//2, int(width), height//2)
         path3 = self.GetPath(gc, rc3, 8)
         br3 = gc.CreateLinearGradientBrush(x, y+height/2, x, y+height, bottomStart, bottomEnd)
         gc.SetBrush(br3)
         gc.FillPath(path3) #draw main
 
         path4 = gc.CreatePath()
-        path4.AddRectangle(x, y+height/2, width, 8)
+        path4.AddRectangle(x, y+height//2, width, 8)
         path4.CloseSubpath()
         gc.SetBrush(br3)
         gc.FillPath(path4)
@@ -2613,7 +2613,7 @@ class AuiFrame(wx.Frame):
         flex.Add(wx.TextCtrl(panel, -1, "", wx.DefaultPosition, wx.Size(100, -1)),
                  1, wx.ALL|wx.ALIGN_CENTRE, 5)
         flex.Add(wx.StaticText(panel, -1, "wxSpinCtrl:"), 0, wx.ALL|wx.ALIGN_CENTRE, 5)
-        flex.Add(wx.SpinCtrl(panel, -1, "5", wx.DefaultPosition, wx.Size(100, -1),
+        flex.Add(wx.SpinCtrl(panel, -1, "5", wx.DefaultPosition, wx.DefaultSize,
                              wx.SP_ARROW_KEYS, 5, 50, 5), 0, wx.ALL|wx.ALIGN_CENTRE, 5)
         flex.Add((5, 5))
         flex.Add((5, 5))
--- a/demo/agw/MacLargeDemo.py
+++ b/demo/agw/MacLargeDemo.py
@@ -223,12 +223,12 @@ class MacRenderer(object):
             mdc.SelectObject(wx.NullBitmap)
 
         # Center the progress bar vertically in the box supplied
-        y = y + (h - PIPE_HEIGHT)/2
+        y = y + (h - PIPE_HEIGHT)//2
 
         if percent == 0:
             middle = 0
         else:
-            middle = (w * percent)/100
+            middle = int((w * percent)/100)
 
         if w < 1:
             return
--- a/demo/agw/PeakMeter.py
+++ b/demo/agw/PeakMeter.py
@@ -149,10 +149,10 @@ class PeakMeterCtrlDemo(wx.Panel):
 
     def OnStart(self, event):
 
-        self.timer.Start(1000/2)        # 2 fps
+        self.timer.Start(1000//2)        # 2 fps
 
-        self.vertPeak.Start(1000/18)        # 18 fps
-        self.horzPeak.Start(1000/20)        # 20 fps
+        self.vertPeak.Start(1000//18)        # 18 fps
+        self.horzPeak.Start(1000//20)        # 20 fps
 
 
     def OnStop(self, event):
--- a/demo/agw/PersistentControls.py
+++ b/demo/agw/PersistentControls.py
@@ -234,7 +234,7 @@ class PersistentFrame1(wx.Frame):
         sizer_1.Add(label_1, 0, wx.ALL, 5)
         sizer_1.Add(combo, 0, wx.LEFT|wx.RIGHT, 5)
         sizer_1.Add((20, 20), 1)
-        box2.Add(sizer_1, 1, wx.EXPAND|wx.ALIGN_CENTER, 0)
+        box2.Add(sizer_1, 1, wx.EXPAND, 0)
         box2.Add((0, 0), 1, 1)
 
         otherPanel.SetSizer(box2)
--- a/demo/agw/RibbonBar.py
+++ b/demo/agw/RibbonBar.py
@@ -799,7 +799,7 @@ class RibbonFrame(wx.Frame):
                                        (c.Blue() + 192) % 256)
 
             dc.SetTextForeground(foreground)
-            dc.DrawText(colour, (iWidth - size.GetWidth() + 1) / 2, (iHeight - size.GetHeight()) / 2)
+            dc.DrawText(colour, (iWidth - size.GetWidth() + 1) // 2, (iHeight - size.GetHeight()) // 2)
             dc.SelectObjectAsSource(wx.NullBitmap)
 
             item = gallery.Append(bitmap, wx.ID_ANY)
--- a/demo/agw/SpeedMeter.py
+++ b/demo/agw/SpeedMeter.py
@@ -418,7 +418,7 @@ class SpeedMeterDemo(wx.Panel):
         bsizer3 = wx.BoxSizer(wx.VERTICAL)
 
         hsizer3 = wx.BoxSizer(wx.HORIZONTAL)
-        sc = wx.SpinCtrl(panel3, -1, size=(60,20))
+        sc = wx.SpinCtrl(panel3, -1)
         sc.SetRange(1, 250)
         sc.SetValue(50)
 
--- a/demo/agw/SuperToolTip.py
+++ b/demo/agw/SuperToolTip.py
@@ -43,7 +43,7 @@ class SuperToolTipDemo(wx.Frame):
         self.topColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.WHITE)
         system = wx.SystemSettings.GetColour(wx.SYS_COLOUR_ACTIVECAPTION)
         r, g, b, a = system
-        self.middleColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.Colour((255-r)/2, (255-g)/2, (255-b)/2))
+        self.middleColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=wx.Colour((255-r)//2, (255-g)//2, (255-b)//2))
         self.bottomColourPicker = wx.ColourPickerCtrl(self.mainPanel, colour=system)
         self.headerCheck = wx.CheckBox(self.mainPanel, -1, "Show Header")
         self.headerText = wx.TextCtrl(self.mainPanel, -1, "Merge And Center")
@@ -233,7 +233,6 @@ class SuperToolTipDemo(wx.Frame):
         frameSizer.Add(self.mainPanel, 1, wx.EXPAND, 0)
         self.SetSizer(frameSizer)
         frameSizer.Layout()
-        frameSizer.Fit(self)
         self.Layout()
 
         wx.CallAfter(mainSizer.Layout)
--- a/demo/agw/ThumbDemoConfig.py
+++ b/demo/agw/ThumbDemoConfig.py
@@ -4,6 +4,7 @@ import wx
 import os
 import images
 
+import wx.lib.agw.scrolledthumbnail as TC
 from wx.lib.agw.scrolledthumbnail import (ScrolledThumbnail,
                                           Thumb,
                                           NativeImageHandler,
--- a/demo/agw/UltimateReportDemo.py
+++ b/demo/agw/UltimateReportDemo.py
@@ -216,7 +216,7 @@ class UltimateRenderer_1(object):
         mdc.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD))
         text = "%d Mb"%self.progressValue
         textWidth, dummy = mdc.GetTextExtent(text)
-        mdc.DrawText(text, rect.width/2 - textWidth/2, rect.height/2 - dummy/2)
+        mdc.DrawText(text, rect.width//2 - textWidth//2, rect.height//2 - dummy//2)
         dc.SetClippingRegion(rect.x, rect.y, rect.width, rect.height)
         dc.Blit(rect.x+3, rect.y, rect.width-6, rect.height, mdc, 0, 0)
         dc.DestroyClippingRegion()
@@ -279,12 +279,12 @@ class UltimateRenderer_1(object):
             mdc.SelectObject(wx.NullBitmap)
 
         # Center the progress bar vertically in the box supplied
-        y = y + (h - PIPE_HEIGHT)/2
+        y = y + (h - PIPE_HEIGHT)//2
 
         if percent == 0:
             middle = 0
         else:
-            middle = (w * percent)/100
+            middle = (w * percent)//100
 
         if middle == 0: # not started
             bitmap = self.REMAINING_BITMAP.GetSubBitmap((1, 0, w, PIPE_HEIGHT))
@@ -335,7 +335,7 @@ class UltimateRenderer_2(object):
         colours = [wx.RED, wx.WHITE, wx.GREEN, wx.Colour("SKY BLUE")]
         w, h = dc.GetTextExtent("Hg")
         x = rect.x + 1
-        y = rect.y + rect.height/2 - h/2
+        y = rect.y + rect.height//2 - h//2
 
         for ch in self.text:
             dc.SetTextForeground(random.choice(colours))
--- a/demo/agw/Windows7Explorer_Contents.py
+++ b/demo/agw/Windows7Explorer_Contents.py
@@ -127,13 +127,13 @@ class FirstColumnRenderer(object):
         """Draw a custom progress bar using double buffering to prevent flicker"""
 
         bmpWidth, bmpHeight = self.icon.GetWidth(), self.icon.GetHeight()
-        dc.DrawIcon(self.icon, rect.x+5, rect.y+(rect.height-bmpHeight)/2)
+        dc.DrawIcon(self.icon, rect.x+5, rect.y+(rect.height-bmpHeight)//2)
 
         dc.SetFont(self.normalFont)
 
         textWidth, textHeight = dc.GetTextExtent(self.text)
         dc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_BTNTEXT))
-        dc.DrawText(self.text, rect.x+bmpWidth+10, rect.y+(rect.height - textHeight)/4)
+        dc.DrawText(self.text, rect.x+bmpWidth+10, rect.y+(rect.height - textHeight)//4)
 
         if not self.description:
             return
@@ -144,10 +144,10 @@ class FirstColumnRenderer(object):
         textWidth, textHeight = dc.GetTextExtent("Type: " + self.description)
 
         dc.SetTextForeground(self.greyColour)
-        dc.DrawText("Type: ", rect.x+bmpWidth+10, rect.y+3*(rect.height - textHeight)/4)
+        dc.DrawText("Type: ", rect.x+bmpWidth+10, rect.y+3*(rect.height - textHeight)//4)
 
         dc.SetTextForeground(wx.BLACK)
-        dc.DrawText(self.description, rect.x+bmpWidth+dummy1+10, rect.y+3*(rect.height - textHeight)/4)
+        dc.DrawText(self.description, rect.x+bmpWidth+dummy1+10, rect.y+3*(rect.height - textHeight)//4)
 
 
     def GetLineHeight(self):
@@ -207,10 +207,10 @@ class SecondColumnRenderer(object):
         textWidth, textHeight = dc.GetTextExtent("Date modified: " + date)
 
         dc.SetTextForeground(self.greyColour)
-        dc.DrawText("Date modified: ", rect.x+5, rect.y+(rect.height - textHeight)/4)
+        dc.DrawText("Date modified: ", rect.x+5, rect.y+(rect.height - textHeight)//4)
 
         dc.SetTextForeground(wx.BLACK)
-        dc.DrawText(date, rect.x+dummy1+5, rect.y+(rect.height - textHeight)/4)
+        dc.DrawText(date, rect.x+dummy1+5, rect.y+(rect.height - textHeight)//4)
 
         if not self.size:
             return
@@ -218,10 +218,10 @@ class SecondColumnRenderer(object):
         dummy1, dummy2= dc.GetTextExtent("Size: ")
 
         dc.SetTextForeground(self.greyColour)
-        dc.DrawText("Size: ", rect.x+5, rect.y+3*(rect.height - textHeight)/4)
+        dc.DrawText("Size: ", rect.x+5, rect.y+3*(rect.height - textHeight)//4)
 
         dc.SetTextForeground(wx.BLACK)
-        dc.DrawText(self.size, rect.x+dummy1+5, rect.y+3*(rect.height - textHeight)/4)
+        dc.DrawText(self.size, rect.x+dummy1+5, rect.y+3*(rect.height - textHeight)//4)
 
 
     def GetLineHeight(self):
--- a/demo/agw/ZoomBar.py
+++ b/demo/agw/ZoomBar.py
@@ -55,7 +55,7 @@ class TestPanel(wx.Panel):
         reflections = glob.glob(bitmapDir + "/*96Flip40.png")
 
         separatorImage = bitmapDir + "/separator.gif"
-        separatorReflection = bitmapDir + "/separatorFlip.png"
+        separatorReflection = bitmapDir + "/separatorflip.png"
         count = 0
 
         for std, ref in zip(standard, reflections):
--- a/wx/lib/agw/advancedsplash.py
+++ b/wx/lib/agw/advancedsplash.py
@@ -438,7 +438,7 @@ class AdvancedSplash(wx.Frame):
 
         if font is None:
             self._textfont = wx.Font(1, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)
-            self._textsize = 10.0
+            self._textsize = 10
             self._textfont.SetPointSize(self._textsize)
         else:
             self._textfont = font
--- a/wx/lib/agw/aui/auibook.py
+++ b/wx/lib/agw/aui/auibook.py
@@ -3452,8 +3452,8 @@ class AuiNotebook(wx.Panel):
         # should happen around the middle
         if tab_ctrl_count < 2:
             new_split_size = self.GetClientSize()
-            new_split_size.x /= 2
-            new_split_size.y /= 2
+            new_split_size.x //= 2
+            new_split_size.y //= 2
 
         else:
 
--- a/wx/lib/agw/balloontip.py
+++ b/wx/lib/agw/balloontip.py
@@ -615,7 +615,7 @@ class BalloonTip(object):
         if delay < 1:
             raise Exception("\nERROR: Delay Time For BalloonTip Creation Should Be Greater Than 1 ms")
 
-        self._startdelaytime = float(delay)
+        self._startdelaytime = int(delay)
 
 
     def GetStartDelay(self):
@@ -640,7 +640,7 @@ class BalloonTip(object):
         if delay < 1:
             raise Exception("\nERROR: Delay Time For BalloonTip Destruction Should Be Greater Than 1 ms")
 
-        self._enddelaytime = float(delay)
+        self._enddelaytime = int(delay)
 
 
     def GetEndDelay(self):
--- a/wx/lib/agw/flatmenu.py
+++ b/wx/lib/agw/flatmenu.py
@@ -736,8 +736,8 @@ class FMRenderer(object):
         """
 
         dcsaver = DCSaver(dc)
-        sepRect1 = wx.Rect(xCoord + textX, yCoord + 1, sepWidth/2, 1)
-        sepRect2 = wx.Rect(xCoord + textX + sepWidth/2, yCoord + 1, sepWidth/2-1, 1)
+        sepRect1 = wx.Rect(xCoord + textX, yCoord + 1, sepWidth//2, 1)
+        sepRect2 = wx.Rect(xCoord + textX + sepWidth//2, yCoord + 1, sepWidth//2-1, 1)
 
         artMgr = ArtManager.Get()
         backColour = artMgr.GetMenuFaceColour()
@@ -817,11 +817,11 @@ class FMRenderer(object):
             imgWidth  = bmp.GetWidth()
 
             if imageMarginX == 0:
-                xx = rect.x + (leftMarginWidth - imgWidth)/2
+                xx = rect.x + (leftMarginWidth - imgWidth)//2
             else:
-                xx = rect.x + ((leftMarginWidth - rect.height) - imgWidth)/2 + rect.height
+                xx = rect.x + ((leftMarginWidth - rect.height) - imgWidth)//2 + rect.height
 
-            yy = rect.y + (rect.height - imgHeight)/2
+            yy = rect.y + (rect.height - imgHeight)//2
             dc.DrawBitmap(bmp, xx, yy, True)
 
         if item.GetKind() == wx.ITEM_CHECK:
@@ -837,7 +837,7 @@ class FMRenderer(object):
                 if not selected and self.highlightCheckAndRadio:
                     self.DrawButton(dc, rr, ControlFocus)
 
-                dc.DrawBitmap(item._checkMarkBmp, rr.x + (rr.width - 16)/2, rr.y + (rr.height - 16)/2, True)
+                dc.DrawBitmap(item._checkMarkBmp, rr.x + (rr.width - 16)//2, rr.y + (rr.height - 16)//2, True)
 
         if item.GetKind() == wx.ITEM_RADIO:
 
@@ -852,7 +852,7 @@ class FMRenderer(object):
                 if not selected and self.highlightCheckAndRadio:
                     self.DrawButton(dc, rr, ControlFocus)
 
-                dc.DrawBitmap(item._radioMarkBmp, rr.x + (rr.width - 16)/2, rr.y + (rr.height - 16)/2, True)
+                dc.DrawBitmap(item._radioMarkBmp, rr.x + (rr.width - 16)//2, rr.y + (rr.height - 16)//2, True)
 
         # Draw text - without accelerators
         text = item.GetLabel()
@@ -890,7 +890,7 @@ class FMRenderer(object):
                 w3, dummy = dc.GetTextExtent(text3)
 
                 posx = xCoord + textX + borderXSize
-                posy = (itemHeight - h)/2 + yCoord
+                posy = (itemHeight - h)//2 + yCoord
 
                 # Draw first part
                 dc.DrawText(text1, posx, posy)
@@ -912,7 +912,7 @@ class FMRenderer(object):
             else:
 
                 w, h = dc.GetTextExtent(text)
-                dc.DrawText(text, xCoord + textX + borderXSize, (itemHeight - h)/2 + yCoord)
+                dc.DrawText(text, xCoord + textX + borderXSize, (itemHeight - h)//2 + yCoord)
 
 
         # Now draw accelerator
@@ -920,7 +920,7 @@ class FMRenderer(object):
         if item.GetAccelString():
 
             accelWidth, accelHeight = dc.GetTextExtent(item.GetAccelString())
-            dc.DrawText(item.GetAccelString(), xCoord + rightMarginX - accelWidth, (itemHeight - accelHeight)/2 + yCoord)
+            dc.DrawText(item.GetAccelString(), xCoord + rightMarginX - accelWidth, (itemHeight - accelHeight)//2 + yCoord)
 
         # Check if this item has sub-menu - if it does, draw
         # right arrow on the right margin
@@ -932,7 +932,7 @@ class FMRenderer(object):
 
             xx = xCoord + rightMarginX + borderXSize
             rr = wx.Rect(xx, rect.y + 1, rect.height-2, rect.height-2)
-            dc.DrawBitmap(rightArrowBmp, rr.x + 4, rr.y +(rr.height-16)/2, True)
+            dc.DrawBitmap(rightArrowBmp, rr.x + 4, rr.y +(rr.height-16)//2, True)
 
 
     def DrawMenuBarButton(self, dc, rect, state):
@@ -1142,7 +1142,7 @@ class FMRenderer(object):
             # Get the menu item rect
             textWidth, textHeight = dc.GetTextExtent(fixedText)
             #rect = wx.Rect(posx+menubar._spacer/2, posy, textWidth, textHeight)
-            rect = wx.Rect(posx+padding/2, posy, textWidth, textHeight)
+            rect = wx.Rect(posx+padding//2, posy, textWidth, textHeight)
 
             # Can we draw more??
             # the +DROP_DOWN_ARROW_WIDTH  is the width of the drop down arrow
@@ -1172,7 +1172,7 @@ class FMRenderer(object):
                 dc.SetTextForeground(textColour)
 
             ww, hh = dc.GetTextExtent(labelOnly)
-            textOffset = (rect.width - ww) / 2
+            textOffset = (rect.width - ww) // 2
 
             if not menubar._isLCD and item.GetTextBitmap().IsOk() and not selected:
                 dc.DrawBitmap(item.GetTextBitmap(), rect.x, rect.y, True)
@@ -1505,8 +1505,8 @@ class FMRendererMSOffice2007(FMRenderer)
         baseColour = colour
 
         # Define the middle points
-        leftPt = wx.Point(rect.x, rect.y + (rect.height / 2))
-        rightPt = wx.Point(rect.x + rect.width-1, rect.y + (rect.height / 2))
+        leftPt = wx.Point(rect.x, rect.y + (rect.height // 2))
+        rightPt = wx.Point(rect.x + rect.width-1, rect.y + (rect.height // 2))
 
         # Define the top region
         top = wx.Rect((rect.GetLeft(), rect.GetTop()), rightPt)
@@ -1572,11 +1572,11 @@ class FMRendererMSOffice2007(FMRenderer)
 
         factor = artMgr.GetMenuBgFactor()
 
-        leftPt1 = wx.Point(rect.x, rect.y + (rect.height / factor))
-        leftPt2 = wx.Point(rect.x, rect.y + (rect.height / factor)*(factor-1))
+        leftPt1 = wx.Point(rect.x, rect.y + (rect.height // factor))
+        leftPt2 = wx.Point(rect.x, rect.y + (rect.height // factor)*(factor-1))
 
-        rightPt1 = wx.Point(rect.x + rect.width, rect.y + (rect.height / factor))
-        rightPt2 = wx.Point(rect.x + rect.width, rect.y + (rect.height / factor)*(factor-1))
+        rightPt1 = wx.Point(rect.x + rect.width, rect.y + (rect.height // factor))
+        rightPt2 = wx.Point(rect.x + rect.width, rect.y + (rect.height // factor)*(factor-1))
 
         # Define the top region
         topReg = [wx.Point() for ii in range(7)]
@@ -2707,7 +2707,7 @@ class FlatMenuBar(wx.Panel):
             elif tbItem.IsCustomControl():
                 control = tbItem.GetCustomControl()
                 ctrlSize = control.GetSize()
-                ctrlPos = wx.Point(xx, rect.y + (rect.height - ctrlSize.y)/2)
+                ctrlPos = wx.Point(xx, rect.y + (rect.height - ctrlSize.y)//2)
                 if control.GetPosition() != ctrlPos:
                     control.SetPosition(ctrlPos)
 
@@ -2727,9 +2727,9 @@ class FlatMenuBar(wx.Panel):
             # Draw the toolbar image
             if bmp.IsOk():
 
-                x = xx - self._toolbarSpacer/2
+                x = xx - self._toolbarSpacer//2
                 #y = rect.y + (rect.height - bmp.GetHeight())/2 - 1
-                y = rect.y + self._toolbarMargin/2
+                y = rect.y + self._toolbarMargin//2
 
                 buttonRect = wx.Rect(x, y, highlight_width, highlight_height)
 
@@ -2745,8 +2745,8 @@ class FlatMenuBar(wx.Panel):
                     else:
                         self._tbButtons[i]._state = ControlNormal
 
-                imgx = buttonRect.x + (buttonRect.width - bmp.GetWidth())/2
-                imgy = buttonRect.y + (buttonRect.height - bmp.GetHeight())/2
+                imgx = buttonRect.x + (buttonRect.width - bmp.GetWidth())//2
+                imgy = buttonRect.y + (buttonRect.height - bmp.GetHeight())//2
 
                 if self._tbButtons[i]._state == ControlFocus and not self._tbButtons[i]._tbItem.IsSelected():
 
@@ -2827,8 +2827,8 @@ class FlatMenuBar(wx.Panel):
         dropArrowBmp = self.GetRenderer()._bitmaps["arrow_down"]
 
         # Calc the image coordinates
-        xx = rect.x + (DROP_DOWN_ARROW_WIDTH - dropArrowBmp.GetWidth())/2
-        yy = rect.y + (rect.height - dropArrowBmp.GetHeight())/2
+        xx = rect.x + (DROP_DOWN_ARROW_WIDTH - dropArrowBmp.GetWidth())//2
+        yy = rect.y + (rect.height - dropArrowBmp.GetHeight())//2
 
         dc.DrawBitmap(dropArrowBmp, xx, yy + self._spacer, True)
         self._dropDownButtonState = state
@@ -3269,8 +3269,8 @@ class FlatMenuBar(wx.Panel):
 
         # draw the bitmap over the highlight
         buttonRect = wx.Rect(*rect)
-        x = rect.x + (buttonRect.width - self._tbButtons[idx]._tbItem.GetBitmap().GetWidth())/2
-        y = rect.y + (buttonRect.height - self._tbButtons[idx]._tbItem.GetBitmap().GetHeight())/2
+        x = rect.x + (buttonRect.width - self._tbButtons[idx]._tbItem.GetBitmap().GetWidth())//2
+        y = rect.y + (buttonRect.height - self._tbButtons[idx]._tbItem.GetBitmap().GetHeight())//2
 
         if state == ControlFocus:
 
@@ -3784,7 +3784,7 @@ class FlatMenuBar(wx.Panel):
         pn.Name("flat_menu_bar")
         pn.Caption("Menu Bar")
         pn.Top()
-        pn.MinSize(wx.Size(xx/2, self._barHeight))
+        pn.MinSize(wx.Size(xx//2, self._barHeight))
         pn.LeftDockable(False)
         pn.RightDockable(False)
         pn.ToolbarPane()
@@ -3997,8 +3997,8 @@ class FlatMenuButton(object):
         """
 
         rect = wx.Rect(self._pos, self._size)
-        xx = rect.x + (rect.width - self._normalBmp.GetWidth())/2
-        yy = rect.y + (rect.height - self._normalBmp.GetHeight())/2
+        xx = rect.x + (rect.width - self._normalBmp.GetWidth())//2
+        yy = rect.y + (rect.height - self._normalBmp.GetHeight())//2
 
         self._parent.GetRenderer().DrawScrollButton(dc, rect, self._state)
         dc.DrawBitmap(self._normalBmp, xx, yy, True)
--- a/wx/lib/agw/flatnotebook.py
+++ b/wx/lib/agw/flatnotebook.py
@@ -858,9 +858,9 @@ def PaintStraightGradientBox(dc, rect, s
 
     for i in range(high+1):
 
-        r = startColour.Red() + ((i*rd*100)/high)/100
-        g = startColour.Green() + ((i*gd*100)/high)/100
-        b = startColour.Blue() + ((i*bd*100)/high)/100
+        r = startColour.Red() + ((i*rd*100)//high)//100
+        g = startColour.Green() + ((i*gd*100)//high)//100
+        b = startColour.Blue() + ((i*bd*100)//high)//100
 
         p = wx.Pen(wx.Colour(r, g, b))
         dc.SetPen(p)
@@ -2630,9 +2630,9 @@ class FNBRendererDefault(FNBRenderer):
         imageYCoord = (pc.HasAGWFlag(FNB_BOTTOM) and [6] or [8])[0]
 
         if hasImage:
-            textOffset = 2*pc._pParent._nPadding + 16 + shapePoints/2
+            textOffset = 2*pc._pParent._nPadding + 16 + shapePoints//2
         else:
-            textOffset = pc._pParent._nPadding + shapePoints/2
+            textOffset = pc._pParent._nPadding + shapePoints//2
 
         textOffset += 2
 
--- a/wx/lib/agw/floatspin.py
+++ b/wx/lib/agw/floatspin.py
@@ -336,7 +336,7 @@ class FloatSpin(wx.Control):
     """
 
     def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition,
-                 size=(95,-1), style=0, value=0.0, min_val=None, max_val=None,
+                 size=wx.DefaultSize, style=0, value=0.0, min_val=None, max_val=None,
                  increment=1.0, digits=-1, agwStyle=FS_LEFT,
                  name="FloatSpin"):
         """
--- a/wx/lib/agw/gradientbutton.py
+++ b/wx/lib/agw/gradientbutton.py
@@ -412,14 +412,14 @@ class GradientButton(wx.Control):
 
         x, y, width, height = clientRect
 
-        gradientRect.SetHeight(gradientRect.GetHeight()/2 + ((capture==self and [1] or [0])[0]))
+        gradientRect.SetHeight(gradientRect.GetHeight()//2 + ((capture==self and [1] or [0])[0]))
         if capture != self:
             if self._mouseAction == HOVER:
                 topStart, topEnd = self.LightColour(self._topStartColour, 10), self.LightColour(self._topEndColour, 10)
             else:
                 topStart, topEnd = self._topStartColour, self._topEndColour
 
-            rc1 = wx.Rect(x, y, width, height/2)
+            rc1 = wx.Rect(x, y, width, height//2)
             path1 = self.GetPath(gc, rc1, 8)
             br1 = gc.CreateLinearGradientBrush(x, y, x, y+height/2, topStart, topEnd)
             gc.SetBrush(br1)
@@ -448,7 +448,7 @@ class GradientButton(wx.Control):
             else:
                 bottomStart, bottomEnd = self._bottomStartColour, self._bottomEndColour
 
-            rc3 = wx.Rect(x, y+height/2, width, height/2)
+            rc3 = wx.Rect(x, y+height//2, width, height//2)
             path3 = self.GetPath(gc, rc3, 8)
             br3 = gc.CreateLinearGradientBrush(x, y+height/2, x, y+height, bottomStart, bottomEnd)
             gc.SetBrush(br3)
@@ -463,7 +463,7 @@ class GradientButton(wx.Control):
             shadowOffset = 0
         else:
 
-            rc2 = wx.Rect(x+1, gradientRect.height/2, gradientRect.width, gradientRect.height)
+            rc2 = wx.Rect(x+1, gradientRect.height//2, gradientRect.width, gradientRect.height)
             path2 = self.GetPath(gc, rc2, 8)
             gc.SetPen(wx.Pen(self._pressedBottomColour))
             gc.SetBrush(wx.Brush(self._pressedBottomColour))
--- a/wx/lib/agw/hypertreelist.py
+++ b/wx/lib/agw/hypertreelist.py
@@ -3381,7 +3381,7 @@ class TreeListMainWindow(CustomTreeCtrl)
 
             if not self.HasAGWFlag(wx.TR_NO_LINES) and children:
                 last_child = children[-1]
-                Y1 = last_child.GetY() + last_child.GetHeight() / 2
+                Y1 = last_child.GetY() + last_child.GetHeight() // 2
                 dc.DrawLine(x, oldY, x, Y1)
 
         return y, x_maincol
--- a/wx/lib/agw/knobctrl.py
+++ b/wx/lib/agw/knobctrl.py
@@ -325,7 +325,7 @@ class BufferedWindow(wx.Window):
         memory.Clear()
 
         minradius = min(0.9*self.Width/2.0, 0.9*self.Height/2.0)
-        memory.DrawCircle(self.Width//2, self.Height//2, minradius)
+        memory.DrawCircle(self.Width//2, self.Height//2, int(minradius))
         memory.SelectObject(wx.NullBitmap)
         self._region = wx.Region(self._Buffer, self.GetBackgroundColour())
         self._minradius = minradius
@@ -645,8 +645,8 @@ class KnobCtrl(BufferedWindow):
             dxi = math.cos(angle)*((width - xshift + tagLen - 6)/2.0 - tagLen)
             dyi = math.sin(angle)*((height - yshift + tagLen - 6)/2.0 - tagLen)
 
-            dc.DrawLine(width//2 - sxi, height//2 - syi,
-                        width//2 - dxi, height//2 - dyi)
+            dc.DrawLine(int(width//2 - sxi), int(height//2 - syi),
+                        int(width//2 - dxi), int(height//2 - dyi))
 
 
     def DrawDiagonalGradient(self, dc, size):
@@ -759,8 +759,8 @@ class KnobCtrl(BufferedWindow):
         p1 = wx.Pen(self.OffsetColour(pencolour, -70), 2)
         p2 = wx.Pen(self.OffsetColour(pencolour, 10), 1)
 
-        pt1 = wx.Point(cx-r*math.sqrt(2)/2.0, cy+r*math.sqrt(2)/2.0)
-        pt2 = wx.Point(cx+r*math.sqrt(2)/2.0, cy-r*math.sqrt(2)/2.0)
+        pt1 = wx.Point(int(cx-r*math.sqrt(2)/2.0), int(cy+r*math.sqrt(2)/2.0))
+        pt2 = wx.Point(int(cx+r*math.sqrt(2)/2.0), int(cy-r*math.sqrt(2)/2.0))
 
         dc.SetPen(p2)
         dc.DrawArc(pt1, pt2, (cx, cy))
@@ -779,7 +779,7 @@ class KnobCtrl(BufferedWindow):
         radius = 0.9*min(size.x, size.y)/2.0
         dc.SetBrush(wx.TRANSPARENT_BRUSH)
         dc.SetPen(wx.Pen(self._boundingcolour))
-        dc.DrawCircle(self.Width//2, self.Height//2, radius)
+        dc.DrawCircle(self.Width//2, self.Height//2, int(radius))
 
 
     def CircleCoords(self, radius, angle, centerX, centerY):
--- a/wx/lib/agw/labelbook.py
+++ b/wx/lib/agw/labelbook.py
@@ -1376,13 +1376,13 @@ class ImageContainer(ImageContainerBase)
 
                 if bUseYcoord:
 
-                    imgXcoord = self._nImgSize / 2
-                    imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [pos + self._nImgSize / 2] or [pos + imgTopPadding])[0]
+                    imgXcoord = self._nImgSize // 2
+                    imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [pos + self._nImgSize // 2] or [pos + imgTopPadding])[0]
 
                 else:
 
-                    imgXcoord = pos + (rectWidth / 2) - (self._nImgSize / 2)
-                    imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [self._nImgSize / 2] or [imgTopPadding])[0]
+                    imgXcoord = pos + (rectWidth // 2) - (self._nImgSize // 2)
+                    imgYcoord = (style & INB_SHOW_ONLY_IMAGES and [self._nImgSize // 2] or [imgTopPadding])[0]
 
                 self._ImageList.Draw(self._pagesInfoVec[i].GetImageIndex(), dc,
                                      imgXcoord, imgYcoord,
@@ -1408,15 +1408,15 @@ class ImageContainer(ImageContainerBase)
 
                 if bUseYcoord:
 
-                    textOffsetX = ((rectWidth - textWidth) / 2 )
+                    textOffsetX = ((rectWidth - textWidth) // 2 )
                     textOffsetY = (not style & INB_SHOW_ONLY_TEXT  and [pos + self._nImgSize  + imgTopPadding + 3] or \
-                                       [pos + ((self._nImgSize * 2 - textHeight) / 2 )])[0]
+                                       [pos + ((self._nImgSize * 2 - textHeight) // 2 )])[0]
 
                 else:
 
-                    textOffsetX = (rectWidth - textWidth) / 2  + pos + nTextPaddingLeft
+                    textOffsetX = (rectWidth - textWidth) // 2  + pos + nTextPaddingLeft
                     textOffsetY = (not style & INB_SHOW_ONLY_TEXT and [self._nImgSize + imgTopPadding + 3] or \
-                                       [((self._nImgSize * 2 - textHeight) / 2 )])[0]
+                                       [((self._nImgSize * 2 - textHeight) // 2 )])[0]
 
                 dc.SetTextForeground(wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT))
                 dc.DrawText(fixedText, textOffsetX, textOffsetY)
@@ -1591,8 +1591,8 @@ class LabelContainer(ImageContainerBase)
             # Draw gradient in the background area
             startColour = self._coloursMap[INB_TAB_AREA_BACKGROUND_COLOUR]
             endColour   = ArtManager.Get().LightColour(self._coloursMap[INB_TAB_AREA_BACKGROUND_COLOUR], 50)
-            ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(0, 0, size.x / 2, size.y), startColour, endColour, False)
-            ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(size.x / 2, 0, size.x / 2, size.y), endColour, startColour, False)
+            ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(0, 0, size.x // 2, size.y), startColour, endColour, False)
+            ArtManager.Get().PaintStraightGradientBox(dc, wx.Rect(size.x // 2, 0, size.x // 2, size.y), endColour, startColour, False)
 
         else:
 
@@ -1638,7 +1638,7 @@ class LabelContainer(ImageContainerBase)
 
             if self.HasAGWFlag(INB_SHOW_ONLY_TEXT):
                 font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
-                font.SetPointSize(font.GetPointSize() * self.GetParent().GetFontSizeMultiple())
+                font.SetPointSize(int(font.GetPointSize() * self.GetParent().GetFontSizeMultiple()))
 
                 if self.GetParent().GetFontBold():
                     font.SetWeight(wx.FONTWEIGHT_BOLD)
@@ -1954,7 +1954,7 @@ class LabelContainer(ImageContainerBase)
 
         # Redraw the text with underlined font
         underLinedFont = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
-        underLinedFont.SetPointSize(underLinedFont.GetPointSize() * self.GetParent().GetFontSizeMultiple())
+        underLinedFont.SetPointSize(int(underLinedFont.GetPointSize() * self.GetParent().GetFontSizeMultiple()))
         if self.GetParent().GetFontBold():
             underLinedFont.SetWeight(wx.FONTWEIGHT_BOLD)
         elif self.HasAGWFlag(INB_BOLD_TAB_SELECTION) and selected:
@@ -2050,7 +2050,7 @@ class LabelContainer(ImageContainerBase)
         imgRect = wx.Rect(*rect)
 
         font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
-        font.SetPointSize(font.GetPointSize() * self.GetParent().GetFontSizeMultiple())
+        font.SetPointSize(int(font.GetPointSize() * self.GetParent().GetFontSizeMultiple()))
 
         if self.GetParent().GetFontBold():
             font.SetWeight(wx.FONTWEIGHT_BOLD)
@@ -2069,7 +2069,7 @@ class LabelContainer(ImageContainerBase)
 
         # Text bounding rectangle
         textRect.x += nPadding
-        textRect.y = rect.y + (rect.height - h)/2
+        textRect.y = rect.y + (rect.height - h)//2
         textRect.width = rect.width - 2 * nPadding
 
         if bmp.IsOk() and not self.HasAGWFlag(INB_SHOW_ONLY_TEXT):
@@ -2086,7 +2086,7 @@ class LabelContainer(ImageContainerBase)
 
             imgRect.x += nPadding
             imgRect.width = bmp.GetWidth()
-            imgRect.y = rect.y + (rect.height - bmp.GetHeight())/2
+            imgRect.y = rect.y + (rect.height - bmp.GetHeight())//2
             imgRect.height = bmp.GetHeight()
 
         # Draw bounding rectangle
@@ -2496,7 +2496,7 @@ class FlatBookBase(wx.Panel):
             dc = wx.MemoryDC()
             dc.SelectObject(wx.Bitmap(1, 1))
             font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
-            font.SetPointSize(font.GetPointSize()*self._fontSizeMultiple)
+            font.SetPointSize(int(font.GetPointSize()*self._fontSizeMultiple))
             if self.GetFontBold() or agwStyle & INB_BOLD_TAB_SELECTION:
                 font.SetWeight(wx.FONTWEIGHT_BOLD)
             dc.SetFont(font)
--- a/wx/lib/agw/peakmeter.py
+++ b/wx/lib/agw/peakmeter.py
@@ -784,7 +784,7 @@ class PeakMeterCtrl(wx.Control):
                 maxWidth = size.x*horzBands
                 points = [wx.Point() for i in range(2)]
                 points[0].y = rectPrev.GetTopRight().y - yDecal
-                points[0].x = rectPrev.GetBottomLeft().x + self._meterData[vert]._falloff*maxWidth/self._maxValue
+                points[0].x = rectPrev.GetBottomLeft().x + self._meterData[vert]._falloff*maxWidth//self._maxValue
                 points[1].y = rectPrev.GetBottomLeft().y + yDecal
                 points[1].x = points[0].x
                 dc.SetPen(pen)
--- a/wx/lib/agw/pygauge.py
+++ b/wx/lib/agw/pygauge.py
@@ -344,7 +344,7 @@ class PyGauge(wx.Window):
                 c1,c2 = gradient
                 w = rect.width * (float(self._valueSorted[i]) / self._range)
                 r = copy.copy(rect)
-                r.width = w
+                r.width = int(w)
                 dc.GradientFillLinear(r, c1, c2, wx.EAST)
         else:
             for i, colour in enumerate(self._barColourSorted):
@@ -352,7 +352,7 @@ class PyGauge(wx.Window):
                 dc.SetPen(wx.Pen(colour))
                 w = rect.width * (float(self._valueSorted[i]) / self._range)
                 r = copy.copy(rect)
-                r.width = w
+                r.width = int(w)
                 dc.DrawRectangle(r)
 
 
--- a/wx/lib/agw/ribbon/art_aui.py
+++ b/wx/lib/agw/ribbon/art_aui.py
@@ -390,7 +390,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP
             grad_rect = wx.Rect(*tab.rect)
             grad_rect.height -= 4
             grad_rect.width -= 1
-            grad_rect.height /= 2
+            grad_rect.height //= 2
             grad_rect.y = grad_rect.y + tab.rect.height - grad_rect.height - 1
             dc.SetBrush(self._tab_active_top_background_brush)
             dc.DrawRectangle(tab.rect.x, tab.rect.y + 3, tab.rect.width - 1, grad_rect.y - tab.rect.y - 3)
@@ -401,7 +401,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP
             btm_rect = wx.Rect(*tab.rect)
             btm_rect.height -= 4
             btm_rect.width -= 1
-            btm_rect.height /= 2
+            btm_rect.height //= 2
             btm_rect.y = btm_rect.y + tab.rect.height - btm_rect.height - 1
             dc.SetBrush(self._tab_hover_background_brush)
             dc.DrawRectangle(btm_rect.x, btm_rect.y, btm_rect.width, btm_rect.height)
@@ -434,8 +434,8 @@ class RibbonAUIArtProvider(RibbonMSWArtP
             icon = tab.page.GetIcon()
             if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS == 0:
                 if icon.IsOk():
-                    x = tab.rect.x + (tab.rect.width - icon.GetWidth()) / 2
-                    dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) / 2, True)
+                    x = tab.rect.x + (tab.rect.width - icon.GetWidth()) // 2
+                    dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) // 2, True)
 
         if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS:
             label = tab.page.GetLabel()
@@ -450,7 +450,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP
                     offset += icon.GetWidth() + 2
 
                 text_width, text_height = dc.GetTextExtent(label)
-                x = (tab.rect.width - 2 - text_width - offset) / 2
+                x = (tab.rect.width - 2 - text_width - offset) // 2
                 if x > 8:
                     x = 8
                 elif x < 1:
@@ -458,7 +458,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP
 
                 width = tab.rect.width - x - 2
                 x += tab.rect.x + offset
-                y = tab.rect.y + (tab.rect.height - text_height) / 2
+                y = tab.rect.y + (tab.rect.height - text_height) // 2
 
                 if icon.IsOk():
                     dc.DrawBitmap(icon, x - offset, tab.rect.y + (tab.rect.height - icon.GetHeight()) / 2, True)
@@ -892,8 +892,8 @@ class RibbonAUIArtProvider(RibbonMSWArtP
                                   self._page_hover_background_gradient_colour, wx.SOUTH)
 
         if bitmap.IsOk():
-            dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) / 2,
-                          preview.y + (preview.height - bitmap.GetHeight()) / 2, True)
+            dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) // 2,
+                          preview.y + (preview.height - bitmap.GetHeight()) // 2, True)
 
 
     def DrawPartialPanelBackground(self, dc, wnd, rect):
@@ -1024,7 +1024,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP
             dc.DrawRectangle(reduced_rect.x, reduced_rect.y, reduced_rect.width, reduced_rect.height)
             btn_bitmap = bitmaps[3]
 
-        dc.DrawBitmap(btn_bitmap, reduced_rect.x + reduced_rect.width / 2 - 2, (rect.y + rect.height / 2) - 2, True)
+        dc.DrawBitmap(btn_bitmap, reduced_rect.x + reduced_rect.width // 2 - 2, (rect.y + rect.height // 2) - 2, True)
 
 
     def DrawGalleryItemBackground(self, dc, wnd, rect, item):
@@ -1277,7 +1277,7 @@ class RibbonAUIArtProvider(RibbonMSWArtP
             if is_split_hybrid:
                 dc.DrawLine(rect.x + avail_width + 1, rect.y, rect.x + avail_width + 1, rect.y + rect.height)
 
-            dc.DrawBitmap(self._toolbar_drop_bitmap, bg_rect.x + avail_width + 2, bg_rect.y + (bg_rect.height / 2) - 2, True)
+            dc.DrawBitmap(self._toolbar_drop_bitmap, bg_rect.x + avail_width + 2, bg_rect.y + (bg_rect.height // 2) - 2, True)
 
-        dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) / 2, bg_rect.y + (bg_rect.height - bitmap.GetHeight()) / 2, True)
+        dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) // 2, bg_rect.y + (bg_rect.height - bitmap.GetHeight()) // 2, True)
 
--- a/wx/lib/agw/ribbon/art_internal.py
+++ b/wx/lib/agw/ribbon/art_internal.py
@@ -32,9 +32,9 @@ def RibbonInterpolateColour(start_colour
     r = end_colour.Red() - start_colour.Red()
     g = end_colour.Green() - start_colour.Green()
     b = end_colour.Blue() - start_colour.Blue()
-    r = start_colour.Red()   + (((r * position * 100) / end_position) / 100)
-    g = start_colour.Green() + (((g * position * 100) / end_position) / 100)
-    b = start_colour.Blue()  + (((b * position * 100) / end_position) / 100)
+    r = start_colour.Red()   + (((r * position * 100) // end_position) // 100)
+    g = start_colour.Green() + (((g * position * 100) // end_position) // 100)
+    b = start_colour.Blue()  + (((b * position * 100) // end_position) // 100)
 
     return wx.Colour(r, g, b)
 
@@ -61,9 +61,9 @@ def RibbonDrawParallelGradientLines(dc,
     bd = end_colour.Blue() - start_colour.Blue()
 
     for step in range(numsteps):
-        r = start_colour.Red() + (((step*rd*100)/numsteps)/100)
-        g = start_colour.Green() + (((step*gd*100)/numsteps)/100)
-        b = start_colour.Blue() + (((step*bd*100)/numsteps)/100)
+        r = start_colour.Red() + (((step*rd*100)//numsteps)//100)
+        g = start_colour.Green() + (((step*gd*100)//numsteps)//100)
+        b = start_colour.Blue() + (((step*bd*100)//numsteps)//100)
 
         p = wx.Pen(wx.Colour(r, g, b))
         dc.SetPen(p)
--- a/wx/lib/agw/ribbon/art_msw.py
+++ b/wx/lib/agw/ribbon/art_msw.py
@@ -982,7 +982,7 @@ class RibbonMSWArtProvider(object):
                 background.width -= 4
                 background.height -= 3
                 h = background.height
-                background.height /= 2
+                background.height //= 2
                 dc.GradientFillLinear(background, self._tab_hover_background_top_colour,
                                       self._tab_hover_background_top_gradient_colour, wx.SOUTH)
 
@@ -1024,9 +1024,9 @@ class RibbonMSWArtProvider(object):
             if icon.IsOk():
                 x = tab.rect.x + 4
                 if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS == 0:
-                    x = tab.rect.x + (tab.rect.width - icon.GetWidth()) / 2
+                    x = tab.rect.x + (tab.rect.width - icon.GetWidth()) // 2
 
-                dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) / 2, True)
+                dc.DrawBitmap(icon, x, tab.rect.y + 1 + (tab.rect.height - 1 - icon.GetHeight()) // 2, True)
 
         if self._flags & RIBBON_BAR_SHOW_PAGE_LABELS:
             label = tab.page.GetLabel()
@@ -1043,13 +1043,13 @@ class RibbonMSWArtProvider(object):
                     x += 3 + tab.page.GetIcon().GetWidth()
                     width -= 3 + tab.page.GetIcon().GetWidth()
 
-                y = tab.rect.y + (tab.rect.height - text_height) / 2
+                y = tab.rect.y + (tab.rect.height - text_height) // 2
 
                 if width <= text_width:
                     dc.SetClippingRegion(x, tab.rect.y, width, tab.rect.height)
                     dc.DrawText(label, x, y)
                 else:
-                    dc.DrawText(label, x + (width - text_width) / 2 + 1, y)
+                    dc.DrawText(label, x + (width - text_width) // 2 + 1, y)
 
 
     def DrawTabSeparator(self, dc, wnd, rect, visibility):
@@ -1093,7 +1093,7 @@ class RibbonMSWArtProvider(object):
         dc = wx.MemoryDC(self._cached_tab_separator)
         self.DrawTabCtrlBackground(dc, wnd, rect)
 
-        x = rect.x + rect.width / 2
+        x = rect.x + rect.width // 2
         h = float(rect.height - 1)
 
         r1 = self._tab_ctrl_background_brush.GetColour().Red() * (1.0 - visibility) + 0.5
@@ -1146,7 +1146,7 @@ class RibbonMSWArtProvider(object):
 
         # upper_rect, lower_rect, paint_rect are all in page co-ordinates
         upper_rect = wx.Rect(*background)
-        upper_rect.height /= 5
+        upper_rect.height //= 5
 
         lower_rect = wx.Rect(*background)
         lower_rect.y += upper_rect.height
@@ -1229,7 +1229,7 @@ class RibbonMSWArtProvider(object):
         background.width -= 4
         background.height -= 2
 
-        background.height /= 5
+        background.height //= 5
         dc.GradientFillLinear(background, self._page_background_top_colour,
                               self._page_background_top_gradient_colour, wx.SOUTH)
 
@@ -1493,10 +1493,10 @@ class RibbonMSWArtProvider(object):
 
         if clip_label:
             clip = wx.DCClipper(dc, label_rect)
-            dc.DrawText(label, label_rect.x, label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) / 2)
+            dc.DrawText(label, label_rect.x, label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) // 2)
         else:
-            dc.DrawText(label, label_rect.x + (label_rect.GetWidth() - label_size.GetWidth()) / 2,
-                        label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) / 2)
+            dc.DrawText(label, label_rect.x + (label_rect.GetWidth() - label_size.GetWidth()) // 2,
+                        label_rect.y + (label_rect.GetHeight() - label_size.GetHeight()) // 2)
 
         if has_ext_button:
             if wnd.IsExtButtonHovered():
@@ -1577,7 +1577,7 @@ class RibbonMSWArtProvider(object):
             # Divider between items and buttons
             dc.DrawLine(rect.x, rect.y + rect.height - 15, rect.x + rect.width, rect.y + rect.height - 15)
 
-            up_btn = wx.Rect(rect.x, rect.y + rect.height - 15, rect.width / 3, 15)
+            up_btn = wx.Rect(rect.x, rect.y + rect.height - 15, rect.width // 3, 15)
             down_btn = wx.Rect(up_btn.GetRight() + 1, up_btn.GetTop(), up_btn.GetWidth(), up_btn.GetHeight())
             dc.DrawLine(down_btn.GetLeft(), down_btn.GetTop(), down_btn.GetLeft(), down_btn.GetBottom())
             ext_btn = wx.Rect(down_btn.GetRight() + 1, up_btn.GetTop(), rect.width - up_btn.GetWidth() - down_btn.GetWidth() - 1, up_btn.GetHeight())
@@ -1587,7 +1587,7 @@ class RibbonMSWArtProvider(object):
             # Divider between items and buttons
             dc.DrawLine(rect.x + rect.width - 15, rect.y, rect.x + rect.width - 15, rect.y + rect.height)
 
-            up_btn = wx.Rect(rect.x + rect.width - 15, rect.y, 15, rect.height / 3)
+            up_btn = wx.Rect(rect.x + rect.width - 15, rect.y, 15, rect.height // 3)
             down_btn = wx.Rect(up_btn.GetLeft(), up_btn.GetBottom() + 1, up_btn.GetWidth(), up_btn.GetHeight())
             dc.DrawLine(down_btn.GetLeft(), down_btn.GetTop(), down_btn.GetRight(), down_btn.GetTop())
             ext_btn = wx.Rect(up_btn.GetLeft(), down_btn.GetBottom() + 1, up_btn.GetWidth(), rect.height - up_btn.GetHeight() - down_btn.GetHeight() - 1)
@@ -1633,14 +1633,14 @@ class RibbonMSWArtProvider(object):
 
         dc.SetPen(wx.TRANSPARENT_PEN)
         dc.SetBrush(btn_top_brush)
-        dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height / 2)
+        dc.DrawRectangle(rect.x, rect.y, rect.width, rect.height // 2)
 
         lower = wx.Rect(*rect)
-        lower.height = (lower.height + 1) / 2
+        lower.height = (lower.height + 1) // 2
         lower.y += rect.height - lower.height
         dc.GradientFillLinear(lower, btn_colour, btn_grad_colour, wx.SOUTH)
 
-        dc.DrawBitmap(btn_bitmap, rect.x + rect.width / 2 - 2, lower.y - 2, True)
+        dc.DrawBitmap(btn_bitmap, rect.x + rect.width // 2 - 2, lower.y - 2, True)
 
 
     def DrawGalleryItemBackground(self, dc, wnd, rect, item):
@@ -1691,7 +1691,7 @@ class RibbonMSWArtProvider(object):
         upper.x += 1
         upper.width -= 2
         upper.y += 1
-        upper.height /= 3
+        upper.height //= 3
         dc.SetPen(wx.TRANSPARENT_PEN)
         dc.SetBrush(top_brush)
         dc.DrawRectangle(upper.x, upper.y, upper.width, upper.height)
@@ -1760,7 +1760,7 @@ class RibbonMSWArtProvider(object):
             client_rect.x += 1
             client_rect.width -= 2
             client_rect.y += 1
-            client_rect.height = (rect.y + rect.height / 5) - client_rect.x
+            client_rect.height = (rect.y + rect.height // 5) - client_rect.x
             dc.GradientFillLinear(client_rect,
                                   self._panel_active_background_top_colour,
                                   self._panel_active_background_top_gradient_colour, wx.SOUTH)
@@ -1785,7 +1785,7 @@ class RibbonMSWArtProvider(object):
         dc.SetPen(wx.TRANSPARENT_PEN)
         dc.DrawRectangle(preview.x + 1, preview.y + preview.height - 8, preview.width - 2, 7)
 
-        mid_pos = rect.y + rect.height / 5 - preview.y
+        mid_pos = rect.y + rect.height // 5 - preview.y
 
         if mid_pos < 0 or mid_pos >= preview.height:
             full_rect = wx.Rect(*preview)
@@ -1816,8 +1816,8 @@ class RibbonMSWArtProvider(object):
                                   self._page_hover_background_gradient_colour, wx.SOUTH)
 
         if bitmap.IsOk():
-            dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) / 2,
-                          preview.y + (preview.height - 7 - bitmap.GetHeight()) / 2, True)
+            dc.DrawBitmap(bitmap, preview.x + (preview.width - bitmap.GetWidth()) // 2,
+                          preview.y + (preview.height - 7 - bitmap.GetHeight()) // 2, True)
 
         self.DrawPanelBorder(dc, preview, self._panel_border_pen, self._panel_border_gradient_pen)
         self.DrawPanelBorder(dc, true_rect, self._panel_minimised_border_pen, self._panel_minimised_border_gradient_pen)
@@ -1829,20 +1829,20 @@ class RibbonMSWArtProvider(object):
 
         if self._flags & RIBBON_BAR_FLOW_VERTICAL:
             preview.x = true_rect.x + 4
-            preview.y = true_rect.y + (true_rect.height - preview.height) / 2
+            preview.y = true_rect.y + (true_rect.height - preview.height) // 2
         else:
-            preview.x = true_rect.x + (true_rect.width - preview.width) / 2
+            preview.x = true_rect.x + (true_rect.width - preview.width) // 2
             preview.y = true_rect.y + 4
 
         dc.SetFont(self._panel_label_font)
         label_width, label_height = dc.GetTextExtent(wnd.GetLabel())
 
-        xpos = true_rect.x + (true_rect.width - label_width + 1) / 2
+        xpos = true_rect.x + (true_rect.width - label_width + 1) // 2
         ypos = preview.y + preview.height + 5
 
         if self._flags & RIBBON_BAR_FLOW_VERTICAL:
             xpos = preview.x + preview.width + 5
-            ypos = true_rect.y + (true_rect.height - label_height) / 2
+            ypos = true_rect.y + (true_rect.height - label_height) // 2
 
         dc.SetTextForeground(self._panel_minimised_label_colour)
         dc.DrawText(wnd.GetLabel(), xpos, ypos)
@@ -1851,12 +1851,12 @@ class RibbonMSWArtProvider(object):
 
         if self._flags & RIBBON_BAR_FLOW_VERTICAL:
             xpos += label_width
-            arrow_points[0] = wx.Point(xpos + 5, ypos + label_height / 2)
+            arrow_points[0] = wx.Point(xpos + 5, ypos + label_height // 2)
             arrow_points[1] = arrow_points[0] + wx.Point(-3,  3)
             arrow_points[2] = arrow_points[0] + wx.Point(-3, -3)
         else:
             ypos += label_height
-            arrow_points[0] = wx.Point(true_rect.width / 2, ypos + 5)
+            arrow_points[0] = wx.Point(true_rect.width // 2, ypos + 5)
             arrow_points[1] = arrow_points[0] + wx.Point(-3, -3)
             arrow_points[2] = arrow_points[0] + wx.Point( 3, -3)
 
@@ -1967,7 +1967,7 @@ class RibbonMSWArtProvider(object):
             bg_rect.height -= 2
 
             bg_rect_top = wx.Rect(*bg_rect)
-            bg_rect_top.height /= 3
+            bg_rect_top.height //= 3
             bg_rect.y += bg_rect_top.height
             bg_rect.height -= bg_rect_top.height
 
@@ -2043,7 +2043,7 @@ class RibbonMSWArtProvider(object):
         if result == RIBBON_BUTTONBAR_BUTTON_LARGE:
 
             padding = 2
-            dc.DrawBitmap(bitmap_large, rect.x + (rect.width - bitmap_large.GetWidth()) / 2,
+            dc.DrawBitmap(bitmap_large, rect.x + (rect.width - bitmap_large.GetWidth()) // 2,
                           rect.y + padding, True)
             ypos = rect.y + padding + bitmap_large.GetHeight() + padding
             arrow_width = (kind == RIBBON_BUTTON_NORMAL and [0] or [8])[0]
@@ -2052,10 +2052,10 @@ class RibbonMSWArtProvider(object):
 
             if label_w + 2 * padding <= rect.width:
 
-                dc.DrawText(label, rect.x + (rect.width - label_w) / 2, ypos)
+                dc.DrawText(label, rect.x + (rect.width - label_w) // 2, ypos)
                 if arrow_width != 0:
-                    self.DrawDropdownArrow(dc, rect.x + rect.width / 2,
-                                           ypos + (label_h * 3) / 2,
+                    self.DrawDropdownArrow(dc, rect.x + rect.width // 2,
+                                           ypos + (label_h * 3) // 2,
                                            self._button_bar_label_colour)
             else:
                 breaki = len(label)
@@ -2067,17 +2067,17 @@ class RibbonMSWArtProvider(object):
                         label_w, label_h = dc.GetTextExtent(label_top)
 
                         if label_w + 2 * padding <= rect.width:
-                            dc.DrawText(label_top, rect.x + (rect.width - label_w) / 2, ypos)
+                            dc.DrawText(label_top, rect.x + (rect.width - label_w) // 2, ypos)
                             ypos += label_h
                             label_bottom = label[breaki:]
                             label_w, label_h = dc.GetTextExtent(label_bottom)
                             label_w += arrow_width
-                            iX = rect.x + (rect.width - label_w) / 2
+                            iX = rect.x + (rect.width - label_w) // 2
                             dc.DrawText(label_bottom, iX, ypos)
 
                             if arrow_width != 0:
                                 self.DrawDropdownArrow(dc, iX + 2 +label_w - arrow_width,
-                                                       ypos + label_h / 2 + 1,
+                                                       ypos + label_h // 2 + 1,
                                                        self._button_bar_label_colour)
 
                             break
@@ -2085,14 +2085,14 @@ class RibbonMSWArtProvider(object):
         elif result == RIBBON_BUTTONBAR_BUTTON_MEDIUM:
 
             x_cursor = rect.x + 2
-            dc.DrawBitmap(bitmap_small, x_cursor, rect.y + (rect.height - bitmap_small.GetHeight())/2, True)
+            dc.DrawBitmap(bitmap_small, x_cursor, rect.y + (rect.height - bitmap_small.GetHeight())//2, True)
             x_cursor += bitmap_small.GetWidth() + 2
             label_w, label_h = dc.GetTextExtent(label)
-            dc.DrawText(label, x_cursor, rect.y + (rect.height - label_h) / 2)
+            dc.DrawText(label, x_cursor, rect.y + (rect.height - label_h) // 2)
             x_cursor += label_w + 3
 
             if kind != RIBBON_BUTTON_NORMAL:
-                self.DrawDropdownArrow(dc, x_cursor, rect.y + rect.height / 2,
+                self.DrawDropdownArrow(dc, x_cursor, rect.y + rect.height // 2,
                                        self._button_bar_label_colour)
 
         else:
@@ -2184,7 +2184,7 @@ class RibbonMSWArtProvider(object):
 
         # Background
         bg_rect_top = wx.Rect(*bg_rect)
-        bg_rect_top.height = (bg_rect_top.height * 2) / 5
+        bg_rect_top.height = (bg_rect_top.height * 2) // 5
         bg_rect_btm = wx.Rect(*bg_rect)
         bg_rect_btm.y += bg_rect_top.height
         bg_rect_btm.height -= bg_rect_top.height
@@ -2244,10 +2244,10 @@ class RibbonMSWArtProvider(object):
                 dc.DrawLine(rect.x + avail_width + 1, rect.y, rect.x + avail_width + 1, rect.y + rect.height)
 
             dc.DrawBitmap(self._toolbar_drop_bitmap, bg_rect.x + avail_width + 2,
-                          bg_rect.y + (bg_rect.height / 2) - 2, True)
+                          bg_rect.y + (bg_rect.height // 2) - 2, True)
 
-        dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) / 2,
-                      bg_rect.y + (bg_rect.height - bitmap.GetHeight()) / 2, True)
+        dc.DrawBitmap(bitmap, bg_rect.x + (avail_width - bitmap.GetWidth()) // 2,
+                      bg_rect.y + (bg_rect.height - bitmap.GetHeight()) // 2, True)
 
 
     def GetBarTabWidth(self, dc, wnd, label, bitmap, ideal=None, small_begin_need_separator=None,
@@ -2474,7 +2474,7 @@ class RibbonMSWArtProvider(object):
             scroll_up.y = size.GetHeight() - 15
             scroll_up.height = 15
             scroll_up.x = 0
-            scroll_up.width = (size.GetWidth() + 2) / 3
+            scroll_up.width = (size.GetWidth() + 2) // 3
             scroll_down.y = scroll_up.y
             scroll_down.height = scroll_up.height
             scroll_down.x = scroll_up.x + scroll_up.width
@@ -2491,7 +2491,7 @@ class RibbonMSWArtProvider(object):
             scroll_up.x = size.GetWidth() - 15
             scroll_up.width = 15
             scroll_up.y = 0
-            scroll_up.height = (size.GetHeight() + 2) / 3
+            scroll_up.height = (size.GetHeight() + 2) // 3
             scroll_down.x = scroll_up.x
             scroll_down.width = scroll_up.width
             scroll_down.y = scroll_up.y + scroll_up.height
--- a/wx/lib/agw/ribbon/bar.py
+++ b/wx/lib/agw/ribbon/bar.py
@@ -743,7 +743,7 @@ class RibbonBar(RibbonControl):
                     delta = info.ideal_width - info.small_must_have_separator_width
                     info.rect.x = x
                     info.rect.y = y
-                    info.rect.width = info.small_must_have_separator_width + delta*(width - total_small_width)/total_delta
+                    info.rect.width = info.small_must_have_separator_width + delta*(width - total_small_width)//total_delta
                     info.rect.height = self._tab_height
 
                     x += info.rect.width + tabsep
@@ -797,7 +797,7 @@ class RibbonBar(RibbonControl):
                         delta = smallest_tab_width - info.minimum_width
                         info.rect.x = x
                         info.rect.y = y
-                        info.rect.width = info.minimum_width + delta*(width - total_small_width)/total_delta
+                        info.rect.width = info.minimum_width + delta*(width - total_small_width)//total_delta
                         info.rect.height = self._tab_height
 
                         x += info.rect.width + tabsep
--- a/wx/lib/agw/ribbon/buttonbar.py
+++ b/wx/lib/agw/ribbon/buttonbar.py
@@ -354,7 +354,7 @@ class RibbonButtonBar(RibbonControl):
                 self._bitmap_size_large = bitmap.GetSize()
                 if not bitmap_small.IsOk():
                     w, h = self._bitmap_size_large
-                    self._bitmap_size_small = wx.Size(0.5*w, 0.5*h)
+                    self._bitmap_size_small = wx.Size(w//2, h//2)
 
             if bitmap_small.IsOk():
 
@@ -867,8 +867,8 @@ class RibbonButtonBar(RibbonControl):
 
             layout_size = self._layouts[layout_i].overall_size
             if layout_size.x <= new_size.x and layout_size.y <= new_size.y:
-                self._layout_offset.x = (new_size.x - layout_size.x)/2
-                self._layout_offset.y = (new_size.y - layout_size.y)/2
+                self._layout_offset.x = (new_size.x - layout_size.x)//2
+                self._layout_offset.y = (new_size.y - layout_size.y)//2
                 self._current_layout = layout_i
                 break
 
--- a/wx/lib/agw/ribbon/gallery.py
+++ b/wx/lib/agw/ribbon/gallery.py
@@ -805,8 +805,8 @@ class RibbonGallery(RibbonControl):
         if client.GetWidth() < 0 or client.GetHeight() < 0:
             return relative_to
 
-        client.x = (client.x / self._bitmap_padded_size.x) * self._bitmap_padded_size.x
-        client.y = (client.y / self._bitmap_padded_size.y) * self._bitmap_padded_size.y
+        client.x = (client.x // self._bitmap_padded_size.x) * self._bitmap_padded_size.x
+        client.y = (client.y // self._bitmap_padded_size.y) * self._bitmap_padded_size.y
 
         size = self._art.GetGallerySize(dc, self, wx.Size(*client))
         minimum = self.GetMinSize()
@@ -849,8 +849,8 @@ class RibbonGallery(RibbonControl):
         elif direction == wx.BOTH:
             client.IncBy(self._bitmap_padded_size)
 
-        client.x = (client.x / self._bitmap_padded_size.x) * self._bitmap_padded_size.x
-        client.y = (client.y / self._bitmap_padded_size.y) * self._bitmap_padded_size.y
+        client.x = (client.x // self._bitmap_padded_size.x) * self._bitmap_padded_size.x
+        client.y = (client.y // self._bitmap_padded_size.y) * self._bitmap_padded_size.y
 
         size = self._art.GetGallerySize(dc, self, wx.Size(*client))
         minimum = self.GetMinSize()
--- a/wx/lib/agw/ribbon/panel.py
+++ b/wx/lib/agw/ribbon/panel.py
@@ -584,12 +584,12 @@ class RibbonPanel(RibbonControl):
         minimum = wx.Size(*self.GetMinSize())
 
         if direction & wx.HORIZONTAL:
-            current.x = (current.x * 4) / 5
+            current.x = (current.x * 4) // 5
             if current.x < minimum.x:
                 current.x = minimum.x
 
         if direction & wx.VERTICAL:
-            current.y = (current.y * 4) / 5
+            current.y = (current.y * 4) // 5
             if current.y < minimum.y:
                 current.y = minimum.y
 
@@ -668,10 +668,10 @@ class RibbonPanel(RibbonControl):
         current = wx.Size(*relative_to)
 
         if direction & wx.HORIZONTAL:
-            current.x = (current.x * 5 + 3) / 4
+            current.x = (current.x * 5 + 3) // 4
 
         if direction & wx.VERTICAL:
-            current.y = (current.y * 5 + 3) / 4
+            current.y = (current.y * 5 + 3) // 4
 
         return current
 
@@ -1076,25 +1076,25 @@ class RibbonPanel(RibbonControl):
         pos = wx.Point()
 
         if direction == wx.NORTH:
-            pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) / 2
+            pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) // 2
             pos.y = panel.GetY() - expanded_size.GetHeight()
             primary_x = True
             secondary_y = 1
 
         elif direction == wx.EAST:
             pos.x = panel.GetRight()
-            pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) / 2
+            pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) // 2
             secondary_x = -1
 
         elif direction == wx.SOUTH:
-            pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) / 2
+            pos.x = panel.GetX() + (panel.GetWidth() - expanded_size.GetWidth()) // 2
             pos.y = panel.GetBottom()
             primary_x = True
             secondary_y = -1
 
         else:
             pos.x = panel.GetX() - expanded_size.GetWidth()
-            pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) / 2
+            pos.y = panel.GetY() + (panel.GetHeight() - expanded_size.GetHeight()) // 2
             secondary_x = 1
 
         expanded = wx.Rect(pos, expanded_size)
--- a/wx/lib/agw/ribbon/toolbar.py
+++ b/wx/lib/agw/ribbon/toolbar.py
@@ -1159,7 +1159,7 @@ class RibbonToolBar(RibbonControl):
 
         # Set group y positions
         for group in self._groups:
-            group.position.y = rowypos[group.position.y]
+            group.position.y = int(rowypos[group.position.y])
 
 
     def GetBestSizeForParentSize(self, parentSize):
--- a/wx/lib/agw/scrolledthumbnail.py
+++ b/wx/lib/agw/scrolledthumbnail.py
@@ -1162,8 +1162,8 @@ class ScrolledThumbnail(wx.ScrolledWindo
         self._tWidth = width
         self._tHeight = height
         self._tBorder = border
-        self.SetScrollRate((self._tWidth + self._tBorder)/4,
-                           (self._tHeight + self._tBorder)/4)
+        self.SetScrollRate((self._tWidth + self._tBorder)//4,
+                           (self._tHeight + self._tBorder)//4)
         self.SetSizeHints(self._tWidth + self._tBorder*2 + 16,
                           self._tHeight + self._tBorder*2 + 8)
         if self._items:
@@ -1588,8 +1588,8 @@ class ScrolledThumbnail(wx.ScrolledWindo
 
         ww = img.GetWidth()
         hh = img.GetHeight()
-        imgRect = wx.Rect(x + (self._tWidth - img.GetWidth())/2,
-                          y + (self._tHeight - img.GetHeight())/2,
+        imgRect = wx.Rect(int(x + (self._tWidth - img.GetWidth())/2),
+                          int(y + (self._tHeight - img.GetHeight())/2),
                           img.GetWidth(), img.GetHeight())
 
         if not thumb._alpha and self._dropShadow:
@@ -1626,14 +1626,14 @@ class ScrolledThumbnail(wx.ScrolledWindo
             else:
                 ty = y + hh + (self._tHeight-hh)/2 + (self._tTextHeight - sh)/2 + 3
 
-            dc.DrawText(mycaption, tx, ty)
+            dc.DrawText(mycaption, int(tx), int(ty))
 
         # outline
         if self._tOutline != THUMB_OUTLINE_NONE and (self._tOutlineNotSelected or self.IsSelected(index)):
 
             dotrect = wx.Rect()
-            dotrect.x = x - 2
-            dotrect.y = y - 2
+            dotrect.x = int(x) - 2
+            dotrect.y = int(y) - 2
             dotrect.width = bmp.GetWidth() - self._tBorder + 4
             dotrect.height = bmp.GetHeight() - self._tBorder + 4
 
@@ -1643,8 +1643,8 @@ class ScrolledThumbnail(wx.ScrolledWindo
 
             if self._tOutline == THUMB_OUTLINE_FULL or self._tOutline == THUMB_OUTLINE_RECT:
 
-                imgRect.x = x
-                imgRect.y = y
+                imgRect.x = int(x)
+                imgRect.y = int(y)
                 imgRect.width = bmp.GetWidth() - self._tBorder
                 imgRect.height = bmp.GetHeight() - self._tBorder
 
@@ -1708,10 +1708,10 @@ class ScrolledThumbnail(wx.ScrolledWindo
             if col == 0:
                 row = row + 1
 
-            xwhite = ((w - self._cols*(self._tWidth + self._tBorder)))/(self._cols+1)
+            xwhite = ((w - self._cols*(self._tWidth + self._tBorder)))//(self._cols+1)
             tx = xwhite + col*(self._tWidth + self._tBorder)
 
-            ty = self._tBorder/2 + row*(self._tHeight + self._tBorder) + \
+            ty = self._tBorder//2 + row*(self._tHeight + self._tBorder) + \
                  self.GetCaptionHeight(0, row)
             tw = self._tWidth + self._tBorder
             th = self._tHeight + self.GetCaptionHeight(row) + self._tBorder
@@ -1723,7 +1723,7 @@ class ScrolledThumbnail(wx.ScrolledWindo
             self.DrawThumbnail(thmb, self._items[ii], ii)
             dc.DrawBitmap(thmb, tx, ty)
 
-        rect = wx.Rect(xwhite, self._tBorder/2,
+        rect = wx.Rect(xwhite, self._tBorder//2,
                        self._cols*(self._tWidth + self._tBorder),
                        self._rows*(self._tHeight + self._tBorder) + \
                        self.GetCaptionHeight(0, self._rows))
--- a/wx/lib/agw/shapedbutton.py
+++ b/wx/lib/agw/shapedbutton.py
@@ -569,9 +569,9 @@ class SButton(wx.Window):
                 rect2 = w*main//secondary
 
             if self._isup:
-                img = self._mainbuttonup.Scale(rect2, rect3)
+                img = self._mainbuttonup.Scale(int(rect2), int(rect3))
             else:
-                img = self._mainbuttondown.Scale(rect2, rect3)
+                img = self._mainbuttondown.Scale(int(rect2), int(rect3))
 
         bmp = img.ConvertToBitmap()
 
@@ -599,7 +599,7 @@ class SButton(wx.Window):
                     ypos = 0
 
         # Draw Finally The Bitmap
-        dc.DrawBitmap(bmp, xpos, ypos, True)
+        dc.DrawBitmap(bmp, int(xpos), int(ypos), True)
 
         # Store Bitmap Position And Size To Draw An Elliptical Focus Indicator
         self._xpos = xpos
@@ -646,7 +646,7 @@ class SButton(wx.Window):
             xp = xc - (tw//2)* cos(angle) - (th//2)*sin(angle)
             yp = yc + (tw//2)*sin(angle) - (th//2)*cos(angle)
 
-            dc.DrawRotatedText(label, xp + dw, yp + dh , angle*180/pi)
+            dc.DrawRotatedText(label, int(xp + dw), int(yp + dh), angle*180/pi)
 
 
     def DrawFocusIndicator(self, dc, width, height):
@@ -676,7 +676,7 @@ class SButton(wx.Window):
         else:
             # This Is An Ellipse
             if hasattr(self, "_xpos"):
-                dc.DrawEllipse(self._xpos + 2, self._ypos + 2, self._imgx - 4, self._imgy - 4)
+                dc.DrawEllipse(int(self._xpos + 2), int(self._ypos + 2), self._imgx - 4, self._imgy - 4)
 
         dc.SetLogicalFunction(wx.COPY)
 
--- a/wx/lib/agw/speedmeter.py
+++ b/wx/lib/agw/speedmeter.py
@@ -580,8 +580,8 @@ class SpeedMeter(BufferedWindow):
         dc.SetBackground(wx.Brush(speedbackground))
         dc.Clear()
 
-        centerX = self.faceBitmap.GetWidth()/2
-        centerY = self.faceBitmap.GetHeight()/2
+        centerX = self.faceBitmap.GetWidth()//2
+        centerY = self.faceBitmap.GetHeight()//2
 
         self.CenterX = centerX
         self.CenterY = centerY
@@ -681,7 +681,7 @@ class SpeedMeter(BufferedWindow):
             # Draw The Filler (Both In "Advance" And "Reverse" Directions)
 
             dc.SetBrush(wx.Brush(fillercolour))
-            dc.DrawArc(xs2, ys2, xe2, ye2, centerX, centerY)
+            dc.DrawArc(xs2, ys2, xe2, ye2, int(centerX), int(centerY))
 
             if self._agwStyle & SM_DRAW_SECTORS == 0:
                 dc.SetBrush(wx.Brush(speedbackground))
@@ -952,7 +952,7 @@ class SpeedMeter(BufferedWindow):
                     y = y - height/2.0 - height*sin(angis)/2.0
                     fancytext.RenderToDC(fancystr, dc, x, y)
                 else:
-                    dc.DrawText(strings, x, y)
+                    dc.DrawText(strings, int(x), int(y))
 
             # This Is The Small Rectangle --> Tick Mark
             rectangle = colourangles[ii] + pi/2.0
@@ -969,6 +969,7 @@ class SpeedMeter(BufferedWindow):
             y4 = y3 + 3*self.scale*sinrect
 
             points = [(x1, y1), (x2, y2), (x4, y4), (x3, y3)]
+            points = [(int(p[0]), int(p[1])) for p in points]
 
             dc.DrawPolygon(points)
 
@@ -1003,6 +1004,7 @@ class SpeedMeter(BufferedWindow):
                         y4 = y3 + self.scale*sinrect
 
                         points = [(x1, y1), (x2, y2), (x4, y4), (x3, y3)]
+                        points = [(int(p[0]), int(p[1])) for p in points]
 
                         dc.DrawPolygon(points)
 
@@ -1017,7 +1019,7 @@ class SpeedMeter(BufferedWindow):
         dc.SetBrush(wx.TRANSPARENT_BRUSH)
 
         if self._drawarc:
-            dc.SetPen(wx.Pen(self.GetArcColour(), 2.0))
+            dc.SetPen(wx.Pen(self.GetArcColour(), 2))
             # If It's Not A Complete Circle, Draw The Connecting Lines And The Arc
             if abs(abs(startangle - endangle) - 2*pi) > 1.0/180.0:
                 dc.DrawArc(xstart, ystart, xend, yend, centerX, centerY)
@@ -1046,7 +1048,7 @@ class SpeedMeter(BufferedWindow):
             newx = centerX + 1.5*mw*cos(middleangle) - mw/2.0
             newy = centerY - 1.5*mh*sin(middleangle) - mh/2.0
             dc.SetTextForeground(middlecolour)
-            dc.DrawText(middletext, newx, newy)
+            dc.DrawText(middletext, int(newx), int(newy))
 
         # Here We Draw The Icon In The Middle, Near The Start Of The Arrow (If Present)
         # This Is Like The "Fuel" Icon In The Cars
@@ -1054,8 +1056,8 @@ class SpeedMeter(BufferedWindow):
 
             middleicon = self.GetMiddleIcon()
             middlewidth, middleheight = self.GetMiddleIconDimens()
-            middleicon.SetWidth(middlewidth*self.scale)
-            middleicon.SetHeight(middleheight*self.scale)
+            middleicon.SetWidth(int(middlewidth*self.scale))
+            middleicon.SetHeight(int(middleheight*self.scale))
             middleangle = (startangle + endangle)/2.0
 
             mw = middleicon.GetWidth()
@@ -1064,7 +1066,7 @@ class SpeedMeter(BufferedWindow):
             newx = centerX + 1.5*mw*cos(middleangle) - mw/2.0
             newy = centerY - 1.5*mh*sin(middleangle) - mh/2.0
 
-            dc.DrawIcon(middleicon, newx, newy)
+            dc.DrawIcon(middleicon, int(newx), int(newy))
 
             # Restore Icon Dimension, If Not Something Strange Happens
             middleicon.SetWidth(middlewidth)
@@ -1109,53 +1111,61 @@ class SpeedMeter(BufferedWindow):
                 if handstyle == "Arrow":
                     # Draw The Shadow
                     shadowcolour = self.GetShadowColour()
-                    dc.SetPen(wx.Pen(shadowcolour, 5*log(self.scale+1)))
+                    dc.SetPen(wx.Pen(shadowcolour, int(5*log(self.scale+1))))
                     dc.SetBrush(wx.Brush(shadowcolour))
                     shadowdistance = 2.0*self.scale
-                    dc.DrawLine(newx + shadowdistance, newy + shadowdistance,
-                                xarr + shadowdistance, yarr + shadowdistance)
+                    dc.DrawLine(int(newx + shadowdistance), int(newy + shadowdistance),
+                                int(xarr + shadowdistance), int(yarr + shadowdistance))
 
-                    dc.DrawPolygon([(x1+shadowdistance, y1+shadowdistance),
-                                    (x2+shadowdistance, y2+shadowdistance),
-                                    (x3+shadowdistance, y3+shadowdistance)])
+                    points = [(x1+shadowdistance, y1+shadowdistance),
+                              (x2+shadowdistance, y2+shadowdistance),
+                              (x3+shadowdistance, y3+shadowdistance)]
+                    points = [(int(p[0]), int(p[1])) for p in points]
+                    dc.DrawPolygon(points)
                 else:
                     # Draw The Shadow
                     shadowcolour = self.GetShadowColour()
                     dc.SetBrush(wx.Brush(shadowcolour))
-                    dc.SetPen(wx.Pen(shadowcolour, 1.0))
+                    dc.SetPen(wx.Pen(shadowcolour, 1))
                     shadowdistance = 1.5*self.scale
 
-                    dc.DrawPolygon([(x1+shadowdistance, y1+shadowdistance),
-                                    (x2+shadowdistance, y2+shadowdistance),
-                                    (x3+shadowdistance, y3+shadowdistance),
-                                    (x4+shadowdistance, y4+shadowdistance)])
+                    points = [(x1+shadowdistance, y1+shadowdistance),
+                              (x2+shadowdistance, y2+shadowdistance),
+                              (x3+shadowdistance, y3+shadowdistance),
+                              (x4+shadowdistance, y4+shadowdistance)]
+                    points = [(int(p[0]), int(p[1])) for p in points]
+                    dc.DrawPolygon(points)
 
             if handstyle == "Arrow":
 
-                dc.SetPen(wx.Pen(handcolour, 1.5))
+                dc.SetPen(wx.Pen(handcolour, 1))
 
                 # Draw The Small Circle In The Center --> The Hand "Holder"
                 dc.SetBrush(wx.Brush(speedbackground))
-                dc.DrawCircle(centerX, centerY, 4*self.scale)
+                dc.DrawCircle(centerX, centerY, int(4*self.scale))
 
-                dc.SetPen(wx.Pen(handcolour, 5*log(self.scale+1)))
+                dc.SetPen(wx.Pen(handcolour, int(5*log(self.scale+1))))
                 # Draw The "Hand", An Arrow
-                dc.DrawLine(newx, newy, xarr, yarr)
+                dc.DrawLine(int(newx), int(newy), int(xarr), int(yarr))
 
                 # Draw The Arrow Pointer
                 dc.SetBrush(wx.Brush(handcolour))
-                dc.DrawPolygon([(x1, y1), (x2, y2), (x3, y3)])
+                points = [(x1, y1), (x2, y2), (x3, y3)]
+                points = [(int(p[0]), int(p[1])) for p in points]
+                dc.DrawPolygon(points)
 
             else:
 
                 # Draw The Hand Pointer
-                dc.SetPen(wx.Pen(handcolour, 1.5))
+                dc.SetPen(wx.Pen(handcolour, 1))
                 dc.SetBrush(wx.Brush(handcolour))
-                dc.DrawPolygon([(x1, y1), (x2, y2), (x3, y3), (x4, y4)])
+                points = [(x1, y1), (x2, y2), (x3, y3), (x4, y4)]
+                points = [(int(p[0]), int(p[1])) for p in points]
+                dc.DrawPolygon(points)
 
                 # Draw The Small Circle In The Center --> The Hand "Holder"
                 dc.SetBrush(wx.Brush(speedbackground))
-                dc.DrawCircle(centerX, centerY, 4*self.scale)
+                dc.DrawCircle(centerX, centerY, int(4*self.scale))
 
 
     def SetIntervals(self, intervals=None):
@@ -1527,7 +1537,7 @@ class SpeedMeter(BufferedWindow):
 
         if font is None:
             self._middletextfont = wx.Font(1, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False)
-            self._middletextsize = 10.0
+            self._middletextsize = 10
             self._middletextfont.SetPointSize(self._middletextsize)
         else:
             self._middletextfont = font
@@ -1599,7 +1609,7 @@ class SpeedMeter(BufferedWindow):
         x = radius*cos(angle) + centerX
         y = radius*sin(angle) + centerY
 
-        return x, y
+        return int(x), int(y)
 
 
     def GetIntersection(self, current, intervals):
--- a/wx/lib/agw/supertooltip.py
+++ b/wx/lib/agw/supertooltip.py
@@ -295,8 +295,8 @@ class ToolTipWindowBase(object):
 
         # Get the user options for header, bitmaps etc...
         drawHeader, drawFooter = classParent.GetDrawHeaderLine(), classParent.GetDrawFooterLine()
-        topRect = wx.Rect(frameRect.x, frameRect.y, frameRect.width, frameRect.height/2)
-        bottomRect = wx.Rect(frameRect.x, frameRect.y+frameRect.height/2, frameRect.width, frameRect.height/2+1)
+        topRect = wx.Rect(frameRect.x, frameRect.y, frameRect.width, frameRect.height//2)
+        bottomRect = wx.Rect(frameRect.x, frameRect.y+frameRect.height//2, frameRect.width, frameRect.height//2+1)
         # Fill the triple-gradient
         dc.GradientFillLinear(topRect, topColour, middleColour, wx.SOUTH)
         dc.GradientFillLinear(bottomRect, middleColour, bottomColour, wx.SOUTH)
@@ -324,9 +324,9 @@ class ToolTipWindowBase(object):
         normalText = classParent.GetTextColour()
         if header:
             dc.SetTextForeground(normalText)
-            dc.DrawText(header, bmpXPos+bmpWidth+self._spacing, (height-textHeight+self._spacing)/2)
+            dc.DrawText(header, bmpXPos+bmpWidth+self._spacing, (height-textHeight+self._spacing)//2)
         if headerBmp and headerBmp.IsOk():
-            dc.DrawBitmap(headerBmp, bmpXPos, (height-bmpHeight+self._spacing)/2, True)
+            dc.DrawBitmap(headerBmp, bmpXPos, (height-bmpHeight+self._spacing)//2, True)
 
         if header or (headerBmp and headerBmp.IsOk()):
             yPos += height
@@ -376,7 +376,7 @@ class ToolTipWindowBase(object):
                 messageHeight += textHeight
 
                 xText = (bmpWidth + 2 * self._spacing) if bmpWidth > 0 else self._spacing
-                yText += textHeight/2+self._spacing
+                yText += textHeight//2+self._spacing
                 maxWidth = max(xText + textWidth + self._spacing, maxWidth)
                 dc.DrawText(line, xText, yText)
                 if isLink:
@@ -412,8 +412,8 @@ class ToolTipWindowBase(object):
             if drawFooter:
                 # Draw the separator line before the footer
                 dc.SetPen(wx.GREY_PEN)
-                dc.DrawLine(self._spacing, yPos-self._spacing/2+toAdd,
-                            width-self._spacing, yPos-self._spacing/2+toAdd)
+                dc.DrawLine(self._spacing, yPos-self._spacing//2+toAdd,
+                            width-self._spacing, yPos-self._spacing//2+toAdd)
         # Draw the footer and footer bitmap (if any)
         dc.SetTextForeground(normalText)
         height = max(textHeight, bmpHeight)
@@ -424,7 +424,7 @@ class ToolTipWindowBase(object):
             maxWidth = max(bmpXPos + bmpWidth + (self._spacing*2) + textWidth, maxWidth)
         if footerBmp and footerBmp.IsOk():
             toAdd = (height - bmpHeight + self._spacing) / 2
-            dc.DrawBitmap(footerBmp, bmpXPos, yPos + toAdd, True)
+            dc.DrawBitmap(footerBmp, bmpXPos, int(yPos + toAdd), True)
             maxWidth = max(footerBmp.GetSize().GetWidth() + bmpXPos, maxWidth)
 
         maxHeight = yPos + height + toAdd
@@ -815,7 +815,7 @@ class SuperToolTip(object):
         :param `delay`: the delay in seconds.
         """
 
-        self._startDelayTime = float(delay)
+        self._startDelayTime = int(delay)
 
 
     def GetStartDelay(self):
@@ -831,7 +831,7 @@ class SuperToolTip(object):
         :param `delay`: the delay in seconds.
         """
 
-        self._endDelayTime = float(delay)
+        self._endDelayTime = int(delay)
 
 
     def GetEndDelay(self):
--- a/wx/lib/agw/toasterbox.py
+++ b/wx/lib/agw/toasterbox.py
@@ -1316,11 +1316,11 @@ class ToasterBoxWindow(wx.Frame):
         for line in lines:
             w, h = dc.GetTextExtent(line)
             fh += h + textPadding
-        y = (th - fh) / 2; coords = []
+        y = (th - fh) // 2; coords = []
 
         for line in lines:
             w, h = dc.GetTextExtent(line)
-            x = (tw - w) / 2
+            x = (tw - w) // 2
             coords.append((x, y))
             y += h + textPadding
 
--- a/wx/lib/agw/ultimatelistctrl.py
+++ b/wx/lib/agw/ultimatelistctrl.py
@@ -914,7 +914,7 @@ class PyImageList(object):
             raise Exception("Wrong index in image list")
 
         bmp = self._images[index]
-        dc.DrawBitmap(bmp, x, y, (flags & wx.IMAGELIST_DRAW_TRANSPARENT) > 0)
+        dc.DrawBitmap(bmp, x, int(y), (flags & wx.IMAGELIST_DRAW_TRANSPARENT) > 0)
 
         return True
 
@@ -4022,7 +4022,7 @@ class UltimateListLineData(object):
 
             if item.HasImage():
 
-                self._gi._rectIcon.x = self._gi._rectAll.x + 4 + (self._gi._rectAll.width - self._gi._rectIcon.width)/2
+                self._gi._rectIcon.x = self._gi._rectAll.x + 4 + (self._gi._rectAll.width - self._gi._rectIcon.width)//2
                 self._gi._rectIcon.y = self._gi._rectAll.y + 4
 
             if item.HasText():
@@ -4030,7 +4030,7 @@ class UltimateListLineData(object):
                 if self._gi._rectLabel.width > spacing:
                     self._gi._rectLabel.x = self._gi._rectAll.x + 2
                 else:
-                    self._gi._rectLabel.x = self._gi._rectAll.x + 2 + (spacing/2) - (self._gi._rectLabel.width/2)
+                    self._gi._rectLabel.x = self._gi._rectAll.x + 2 + (spacing//2) - (self._gi._rectLabel.width//2)
 
                 self._gi._rectLabel.y = self._gi._rectAll.y + self._gi._rectAll.height + 2 - self._gi._rectLabel.height
                 self._gi._rectHighlight.x = self._gi._rectLabel.x - 2
@@ -4546,7 +4546,7 @@ class UltimateListLineData(object):
                 # We got a checkbox-type item
                 ix, iy = self._owner.GetCheckboxImageSize()
                 checked = item.IsChecked()
-                self._owner.DrawCheckbox(dc, xOld, y + (height-iy+1)/2, item.GetKind(), checked, enabled)
+                self._owner.DrawCheckbox(dc, xOld, y + (height-iy+1)//2, item.GetKind(), checked, enabled)
                 xOld += ix
                 width -= ix
 
@@ -4557,7 +4557,7 @@ class UltimateListLineData(object):
                 for img in images:
 
                     ix, iy = self._owner.GetImageSize([img])
-                    self._owner.DrawImage(img, dc, xOld, y + (height-iy)/2, enabled)
+                    self._owner.DrawImage(img, dc, xOld, y + (height-iy)//2, enabled)
 
                     xOld += ix
                     width -= ix
@@ -5230,7 +5230,7 @@ class UltimateListHeaderWindow(wx.Contro
                 # We got a checkbox-type item
                 ix, iy = self._owner.GetCheckboxImageSize()
                 # We draw it on the left, always
-                self._owner.DrawCheckbox(dc, x + HEADER_OFFSET_X, HEADER_OFFSET_Y + (h - 4 - iy)/2, kind, checked, enabled)
+                self._owner.DrawCheckbox(dc, x + HEADER_OFFSET_X, HEADER_OFFSET_Y + (h - 4 - iy)//2, kind, checked, enabled)
                 wcheck += ix + HEADER_IMAGE_MARGIN_IN_REPORT_MODE
                 cw -= ix + HEADER_IMAGE_MARGIN_IN_REPORT_MODE
 
@@ -6819,7 +6819,7 @@ class UltimateListMainWindow(wx.Scrolled
                     # We got a checkbox-type item
                     ix, iy = self.GetCheckboxImageSize()
                     LH = self.GetLineHeight(line)
-                    rect = wx.Rect(xOld, lineY + LH/2 - iy/2, ix, iy)
+                    rect = wx.Rect(xOld, lineY + LH//2 - iy//2, ix, iy)
                     if rect.Contains((x, y)):
                         newItem = self.GetParent().GetItem(line, col)
                         return newItem, ULC_HITTEST_ONITEMCHECK
@@ -7937,13 +7937,13 @@ class UltimateListMainWindow(wx.Scrolled
                     while start_y > view_y:
                         start_y -= SCROLL_UNIT_Y
 
-                    self.Scroll(-1, start_y/SCROLL_UNIT_Y)
+                    self.Scroll(-1, start_y//SCROLL_UNIT_Y)
 
                 if start_y + height > view_y + client_h:
                     while start_y + height < view_y + client_h:
                         start_y += SCROLL_UNIT_Y
 
-                    self.Scroll(-1, (start_y+height-client_h+SCROLL_UNIT_Y)/SCROLL_UNIT_Y)
+                    self.Scroll(-1, (start_y+height-client_h+SCROLL_UNIT_Y)//SCROLL_UNIT_Y)
 
         else: # !report
 
@@ -7960,7 +7960,7 @@ class UltimateListMainWindow(wx.Scrolled
             if rect.y + rect.height - 5 > view_y + client_h:
                 sy = (rect.y + rect.height - client_h + hLine)/hLine
 
-            self.Scroll(sx, sy)
+            self.Scroll(int(sx), int(sy))
 
 
 # ----------------------------------------------------------------------------
--- a/wx/lib/agw/xlsgrid.py
+++ b/wx/lib/agw/xlsgrid.py
@@ -965,7 +965,7 @@ class XLSText(object):
             xp = xc - (text_width/2)*xshift - (text_height/2)*yshift
             yp = yc + (text_width/2)*yshift - (text_height/2)*xshift
 
-            dc.DrawRotatedText(value, xp, yp, self.rotation)
+            dc.DrawRotatedText(value, int(xp), int(yp), self.rotation)
 
         else:
 
@@ -1125,7 +1125,7 @@ class XLSRichText(XLSText):
             if font.escapement == 1:
                 ypos = ypos - maxH + height
 
-            dc.DrawText(chunk, start, ypos)
+            dc.DrawText(chunk, start, int(ypos))
             start += width
 
 
--- a/wx/lib/agw/zoombar.py
+++ b/wx/lib/agw/zoombar.py
@@ -463,7 +463,7 @@ class ZoomBarImage(object):
     def GetPosition(self):
         """ Returns the button position. """
 
-        return wx.Point(self._left, self._top)
+        return wx.Point(int(self._left), int(self._top))
 
 
     def GetSize(self):
@@ -601,7 +601,7 @@ class ImageBar(object):
     def GetPosition(self):
         """ Returns the position of :class:`wx.ImageBar`, as a :class:`wx.Point`. """
 
-        return wx.Point(self._left, self._top)
+        return wx.Point(int(self._left), int(self._top))
 
 
     def GetSize(self):
@@ -660,7 +660,7 @@ class ImageBar(object):
         if xSize is not None:
             self._size = wx.Size(xSize, ySize)
 
-        bitmap.Rescale(self._size.width, self._size.height/2)
+        bitmap.Rescale(self._size.width, self._size.height//2)
 
         r1, g1, b1 = self._startColour.Red(), self._startColour.Green(), self._startColour.Blue()
         r2, g2, b2 = colour.Red(), colour.Green(), colour.Blue()
@@ -1065,7 +1065,7 @@ class ZoomBar(wx.Control):
             ySize += yextent
 
         if self._showReflections:
-            ySize += self._buttonSize/2
+            ySize += self._buttonSize//2
         if self._centerZoom:
             ySize += self._buttonSize
 
@@ -1240,7 +1240,7 @@ class ZoomBar(wx.Control):
             textWidth, textHeight = dc.GetTextExtent(label)
             buttonPos = button.GetPosition()
             buttonSize = button.GetSize()
-            xpos = buttonPos.x + (buttonSize.width - textWidth)/2
+            xpos = buttonPos.x + (buttonSize.width - textWidth)//2
             ypos = buttonPos.y - textHeight - 2
 
             dc.DrawRectangle(xpos-2, ypos-1, textWidth+4, textHeight+2)
--- a/wx/lib/analogclock/analogclock.py
+++ b/wx/lib/analogclock/analogclock.py
@@ -173,7 +173,7 @@ class AnalogClock(wx.Window):
         scale = min([float(size.width) / self.basesize.width,
                      float(size.height) / self.basesize.height])
 
-        centre = wx.Point(size.width / 2., size.height / 2.)
+        centre = wx.Point(size.width // 2, size.height // 2)
 
         self.Box.RecalcCoords(size, centre, scale)
         self.Hands.RecalcCoords(size, centre, scale)
--- a/wx/lib/analogclock/helpers.py
+++ b/wx/lib/analogclock/helpers.py
@@ -37,7 +37,7 @@ class Element:
 
 
     def _pol2rect(self, m, t):
-        return m * math.cos(math.radians(t)), m * math.sin(math.radians(t))
+        return int(m * math.cos(math.radians(t))), int(m * math.sin(math.radians(t)))
 
 
     def _rect2pol(self, x, y):
@@ -174,7 +174,7 @@ class Face(ElementWithDyer):
 
     def Draw(self, dc):
         self.dyer.Select(dc)
-        dc.DrawCircle(self.pos.x, self.pos.y, self.radius)
+        dc.DrawCircle(self.pos.x, self.pos.y, int(self.radius))
 
 
     def RecalcCoords(self, clocksize, centre, scale):
@@ -205,7 +205,7 @@ class Hand(ElementWithDyer):
             m, t = self._rect2pol(x, y)
             polygon[i] = self._pol2rect(m, t - angle)
 
-        dc.DrawPolygon(polygon, centre.x + offset, centre.y + offset)
+        dc.DrawPolygon(polygon, int(centre.x + offset), int(centre.y + offset))
 
 
     def RecalcCoords(self, clocksize, centre, scale):
@@ -226,7 +226,7 @@ class TickSquare(Element):
         x = self.pos.x - width / 2.
         y = self.pos.y - height / 2.
 
-        dc.DrawRectangle(x + offset, y + offset, width, height)
+        dc.DrawRectangle(int(x + offset), int(y + offset), int(width), int(height))
 
 #----------------------------------------------------------------------
 
@@ -242,7 +242,7 @@ class TickCircle(Element):
         x = self.pos.x
         y = self.pos.y
 
-        dc.DrawCircle(x + offset, y + offset, radius)
+        dc.DrawCircle(int(x + offset), int(y + offset), int(radius))
 
 #----------------------------------------------------------------------
 
@@ -273,7 +273,7 @@ class TickPoly(Element):
         x = self.pos.x - width / 2.
         y = self.pos.y - height / 2.
 
-        dc.DrawPolygon(polygon, x + offset, y + offset)
+        dc.DrawPolygon(polygon, int(x + offset), int(y + offset))
 
 
     def DrawRotated(self, dc, offset=0):
@@ -290,7 +290,7 @@ class TickPoly(Element):
         x = self.pos.x - math.cos(r) * width / 2. - math.sin(r) * height / 2.
         y = self.pos.y - math.cos(r) * height / 2. + math.sin(r) * width / 2.
 
-        dc.DrawPolygon(polygon, x + offset, y + offset)
+        dc.DrawPolygon(polygon, int(x + offset), int(y + offset))
 
 #----------------------------------------------------------------------
 
@@ -309,7 +309,7 @@ class TickDecimal(Element):
         x = self.pos.x - width / 2.
         y = self.pos.y - height / 2.
 
-        dc.DrawText(self.text, x + offset, y + offset)
+        dc.DrawText(self.text, int(x + offset), int(y + offset))
 
 
     def DrawRotated(self, dc, offset=0):
@@ -321,7 +321,7 @@ class TickDecimal(Element):
         x = self.pos.x - math.cos(r) * width / 2. - math.sin(r) * height / 2.
         y = self.pos.y - math.cos(r) * height / 2. + math.sin(r) * width / 2.
 
-        dc.DrawRotatedText(self.text, x + offset, y + offset, angle)
+        dc.DrawRotatedText(self.text, int(x + offset), int(y + offset), int(angle))
 
 
 #----------------------------------------------------------------------
@@ -656,7 +656,7 @@ class TickSet:
 
         # Try to find a 'good' max size for text-based ticks.
         if a_tick.text is not None:
-            self.font.SetPointSize(size)
+            self.font.SetPointSize(int(size))
             dc = wx.MemoryDC()
             dc.SelectObject(wx.Bitmap(*clocksize.Get()))
             dc.SetFont(self.font)
@@ -686,7 +686,7 @@ class TickSet:
             x = centre.x + radius * math.sin(angle)
             y = centre.y + radius * math.cos(angle)
 
-            tick.SetPosition(wx.Point(x, y))
+            tick.SetPosition(wx.Point(int(x), int(y)))
 
 
     def GetSize(self):
--- a/wx/lib/analogclock/setup.py
+++ b/wx/lib/analogclock/setup.py
@@ -179,7 +179,7 @@ class _Group_1(_GroupBase):
         p.SetCustomColours(self.customcolours)
         sizer.Add(p, pos=(0, 1), flag=wx.ALIGN_CENTRE_VERTICAL)
 
-        p = self.bw = wx.SpinCtrl(self, size=(75, 21),
+        p = self.bw = wx.SpinCtrl(self,
                                   min=0, max=100, value="75")
         sizer.Add(p, pos=(0, 2), span=(1, 2), flag=wx.ALIGN_CENTRE_VERTICAL)
 
@@ -193,7 +193,7 @@ class _Group_1(_GroupBase):
         p = self.ls = wx.StaticText(self, label="Size:")
         sizer.Add(p, pos=(2, 0), flag=wx.ALIGN_CENTRE_VERTICAL)
 
-        p = self.sz = wx.SpinCtrl(self, size=(75, 21),
+        p = self.sz = wx.SpinCtrl(self,
                                   min=0, max=100, value="75")
         sizer.Add(p, pos=(2, 1), span=(1, 3), flag=wx.ALIGN_CENTRE_VERTICAL)
 
@@ -212,7 +212,7 @@ class _Group_2(_Group_1):
         p = wx.StaticText(self, label="Offset:")
         sizer.Add(p, pos=(3, 0), flag=wx.ALIGN_CENTRE_VERTICAL)
 
-        p = self.of = wx.SpinCtrl(self, size=(75, 21),
+        p = self.of = wx.SpinCtrl(self,
                                   min=0, max=100, value="75")
         sizer.Add(p, pos=(3, 1), span=(1, 3), flag=wx.ALIGN_CENTRE_VERTICAL)
 
--- a/wx/lib/buttons.py
+++ b/wx/lib/buttons.py
@@ -453,7 +453,7 @@ class GenButton(wx.Control):
         tw, th = dc.GetTextExtent(label)
         if not self.up:
             dx = dy = self.labelDelta
-        dc.DrawText(label, (width-tw)/2+dx, (height-th)/2+dy)
+        dc.DrawText(label, (width-tw)//2+dx, (height-th)//2+dy)
 
 
     def DrawFocusIndicator(self, dc, w, h):
@@ -844,7 +844,7 @@ class GenBitmapButton(GenButton):
         if not self.up:
             dx = dy = self.labelDelta
         hasMask = bmp.GetMask() is not None
-        dc.DrawBitmap(bmp, (width-bw)/2+dx, (height-bh)/2+dy, hasMask)
+        dc.DrawBitmap(bmp, (width-bw)//2+dx, (height-bh)//2+dy, hasMask)
 
 
 #----------------------------------------------------------------------
@@ -926,12 +926,12 @@ class GenBitmapTextButton(GenBitmapButto
         if not self.up:
             dx = dy = self.labelDelta
 
-        pos_x = (width-bw-tw)/2+dx      # adjust for bitmap and text to centre
+        pos_x = (width-bw-tw)//2+dx      # adjust for bitmap and text to centre
         if bmp is not None:
-            dc.DrawBitmap(bmp, pos_x, (height-bh)/2+dy, hasMask) # draw bitmap if available
+            dc.DrawBitmap(bmp, pos_x, (height-bh)//2+dy, hasMask) # draw bitmap if available
             pos_x = pos_x + 2   # extra spacing from bitmap
 
-        dc.DrawText(label, pos_x + dx+bw, (height-th)/2+dy)      # draw the text
+        dc.DrawText(label, pos_x + dx+bw, (height-th)//2+dy)      # draw the text
 
 
 #----------------------------------------------------------------------
--- a/wx/lib/colourchooser/pycolourchooser.py
+++ b/wx/lib/colourchooser/pycolourchooser.py
@@ -188,7 +188,7 @@ class PyColourChooser(wx.Panel):
         self.colour_slider.Bind(wx.EVT_MOTION, self.onSliderMotion)
         self.slider = wx.Slider(
                         self, self.idSCROLL, 86, 0, self.colour_slider.HEIGHT - 1,
-                        style=wx.SL_VERTICAL, size=(15, self.colour_slider.HEIGHT)
+                        style=wx.SL_VERTICAL, size=(-1, self.colour_slider.HEIGHT)
                         )
 
         self.Bind(wx.EVT_COMMAND_SCROLL, self.onScroll, self.slider)
@@ -338,7 +338,7 @@ class PyColourChooser(wx.Panel):
         min = self.slider.GetMin()
         max = self.slider.GetMax()
         val = (1 - v) * max
-        self.slider.SetValue(val)
+        self.slider.SetValue(int(val))
 
     def getVFromSlider(self):
         """Get the current value of "V" from the v slider."""
--- a/wx/lib/colourchooser/pypalette.py
+++ b/wx/lib/colourchooser/pypalette.py
@@ -165,7 +165,7 @@ class PyPalette(canvas.Canvas):
         if self.point:
             self.buffer.SetPen(wx.BLACK_PEN)
             self.buffer.SetBrush(wx.TRANSPARENT_BRUSH)
-            self.buffer.DrawCircle(self.point[0], self.point[1], 3)
+            self.buffer.DrawCircle(int(self.point[0]), int(self.point[1]), 3)
 
     def HighlightPoint(self, x, y):
         """Highlights an area of the palette with a little circle around
--- a/wx/lib/floatcanvas/FCObjects.py
+++ b/wx/lib/floatcanvas/FCObjects.py
@@ -296,7 +296,7 @@ class DrawObject:
         else:
             self.Pen = self.PenList.setdefault(
                 (LineColor, LineStyle, LineWidth),
-                wx.Pen(LineColor, LineWidth, self.LineStyleList[LineStyle]))
+                wx.Pen(LineColor, int(LineWidth), self.LineStyleList[LineStyle]))
 
     def SetHitBrush(self, HitColor):
         """
@@ -1202,14 +1202,14 @@ class SquarePoint(XYObjectMixin, ColorOn
             x = xc - Size/2.0
             y = yc - Size/2.0
             dc.SetBrush(self.Brush)
-            dc.DrawRectangle(x, y, Size, Size)
+            dc.DrawRectangle(int(x), int(y), Size, Size)
         if HTdc and self.HitAble:
             HTdc.SetPen(self.HitPen)
             if self.Size <= 1:
                 HTdc.DrawPoint(xc, xc)
             else:
                 HTdc.SetBrush(self.HitBrush)
-                HTdc.DrawRectangle(x, y, Size, Size)
+                HTdc.DrawRectangle(int(x), int(y), Size, Size)
 
 class RectEllipse(XYObjectMixin, LineAndFillMixin, DrawObject):
     """A RectEllipse draw object."""
@@ -2161,7 +2161,7 @@ class ScaledBitmap(TextObjectMixin, Draw
         W = H * (self.bmpWidth / self.bmpHeight)
         if (self.ScaledBitmap is None) or (H != self.ScaledHeight) :
             self.ScaledHeight = H
-            Img = self.Image.Scale(W, H)
+            Img = self.Image.Scale(int(W), int(H))
             self.ScaledBitmap = wx.Bitmap(Img)
 
         XY = self.ShiftFun(XY[0], XY[1], W, H)
--- a/wx/lib/gizmos/ledctrl.py
+++ b/wx/lib/gizmos/ledctrl.py
@@ -293,7 +293,7 @@ class LEDNumberCtrl(wx.Control):
 
         if digit & c.COLON:
             dc.SetBrush(wx.Brush(lineColor))
-            centerX = XPos + (self.m_lineLength + self.m_digitMargin) / 2
-            radius = self.m_lineWidth / 2
-            dc.DrawCircle(centerX, (self.m_lineLength + (self.m_lineMargin * 4)) / 2, radius)
-            dc.DrawCircle(centerX, (self.m_lineLength * 2 + (self.m_lineMargin * 6)) * 3 / 4, radius)
+            centerX = XPos + (self.m_lineLength + self.m_digitMargin) // 2
+            radius = self.m_lineWidth // 2
+            dc.DrawCircle(centerX, (self.m_lineLength + (self.m_lineMargin * 4)) // 2, radius)
+            dc.DrawCircle(centerX, (self.m_lineLength * 2 + (self.m_lineMargin * 6)) * 3 // 4, radius)
--- a/wx/lib/imagebrowser.py
+++ b/wx/lib/imagebrowser.py
@@ -347,8 +347,8 @@ class ImageView(wx.Window):
         owidth = int(scale*iwidth)
         oheight = int(scale*iheight)
 
-        diffx = (wwidth - owidth)/2   # center calc
-        diffy = (wheight - oheight)/2   # center calc
+        diffx = (wwidth - owidth)//2   # center calc
+        diffy = (wheight - oheight)//2   # center calc
 
         if not bmp:
             if owidth!=iwidth or oheight!=iheight:
--- a/wx/lib/ogl/basic.py
+++ b/wx/lib/ogl/basic.py
@@ -1051,7 +1051,7 @@ class Shape(ShapeEvtHandler):
         dc.SetPen(self.GetBackgroundPen())
         dc.SetBrush(self.GetBackgroundBrush())
 
-        dc.DrawRectangle(topLeftX - penWidth, topLeftY - penWidth, maxX + penWidth * 2 + 4, maxY + penWidth * 2 + 4)
+        dc.DrawRectangle(int(topLeftX - penWidth), int(topLeftY - penWidth), int(maxX + penWidth * 2 + 4), int(maxY + penWidth * 2 + 4))
 
     def EraseLinks(self, dc, attachment = -1, recurse = False):
         """
@@ -2769,9 +2769,9 @@ class RectangleShape(Shape):
             dc.SetBrush(self._brush)
 
         if self._cornerRadius:
-            dc.DrawRoundedRectangle(x1, y1, self._width, self._height, self._cornerRadius)
+            dc.DrawRoundedRectangle(int(x1), int(y1), self._width, self._height, self._cornerRadius)
         else:
-            dc.DrawRectangle(x1, y1, self._width, self._height)
+            dc.DrawRectangle(int(x1), int(y1), self._width, self._height)
 
     def GetBoundingBoxMin(self):
         """Get the bounding box minimum."""
@@ -2882,7 +2882,7 @@ class PolygonShape(Shape):
             # Duplicate the list of points
             self._points = []
             for point in the_points:
-                new_point = wx.Point(point[0], point[1])
+                new_point = wx.Point(int(point[0]), int(point[1]))
                 self._points.append(new_point)
             self.CalculateBoundingBox()
             self._originalWidth = self._boundWidth
@@ -3444,7 +3444,7 @@ class EllipseShape(Shape):
                 dc.SetPen(self._pen)
         if self._brush:
             dc.SetBrush(self._brush)
-        dc.DrawEllipse(self._xpos - self.GetWidth() / 2.0, self._ypos - self.GetHeight() / 2.0, self.GetWidth(), self.GetHeight())
+        dc.DrawEllipse(int(self._xpos - self.GetWidth() / 2.0), int(self._ypos - self.GetHeight() / 2.0), self.GetWidth(), self.GetHeight())
 
     def SetSize(self, x, y, recursive = True):
         """
--- a/wx/lib/ogl/bmpshape.py
+++ b/wx/lib/ogl/bmpshape.py
@@ -32,7 +32,7 @@ class BitmapShape(RectangleShape):
 
         x = self._xpos - self._bitmap.GetWidth() / 2.0
         y = self._ypos - self._bitmap.GetHeight() / 2.0
-        dc.DrawBitmap(self._bitmap, x, y, True)
+        dc.DrawBitmap(self._bitmap, int(x), int(y), True)
 
     def SetSize(self, w, h, recursive = True):
         """
--- a/wx/lib/ogl/composit.py
+++ b/wx/lib/ogl/composit.py
@@ -1131,11 +1131,11 @@ class DivisionShape(CompositeShape):
 
         if self._leftSide:
             dc.SetPen(self._leftSidePen)
-            dc.DrawLine(x1, y2, x1, y1)
+            dc.DrawLine(int(x1), int(y2), int(x1), int(y1))
 
         if self._topSide:
             dc.SetPen(self._topSidePen)
-            dc.DrawLine(x1, y1, x2, y1)
+            dc.DrawLine(int(x1), int(y1), int(x2), int(y1))
 
         # For testing purposes, draw a rectangle so we know
         # how big the division is.
--- a/wx/lib/ogl/divided.py
+++ b/wx/lib/ogl/divided.py
@@ -231,7 +231,7 @@ class DividedShape(RectangleShape):
                 regionPen = region.GetActualPen()
                 if regionPen:
                     dc.SetPen(regionPen)
-                    dc.DrawLine(leftX, y, rightX, y)
+                    dc.DrawLine(int(leftX), int(y), int(rightX), int(y))
 
             currentY = actualY
 
--- a/wx/lib/ogl/lines.py
+++ b/wx/lib/ogl/lines.py
@@ -1200,7 +1200,7 @@ class LineShape(Shape):
 
         points = []
         for point in self._lineControlPoints:
-            points.append(wx.Point(point[0], point[1]))
+            points.append(wx.Point(int(point[0]), int(point[1])))
 
         if self._isSpline:
             dc.DrawSpline(points)
--- a/wx/lib/ogl/oglmisc.py
+++ b/wx/lib/ogl/oglmisc.py
@@ -300,10 +300,10 @@ def DrawFormattedText(dc, text_list, xpo
         yoffset = ypos - height / 2.0
 
     # +1 to allow for rounding errors
-    dc.SetClippingRegion(xpos - width / 2.0, ypos - height / 2.0, width + 1, height + 1)
+    dc.SetClippingRegion(int(xpos - width / 2.0), int(ypos - height / 2.0), int(width + 1), int(height + 1))
 
     for line in text_list:
-        dc.DrawText(line.GetText(), xoffset + line.GetX(), yoffset + line.GetY())
+        dc.DrawText(line.GetText(), int(xoffset + line.GetX()), int(yoffset + line.GetY()))
 
     dc.DestroyClippingRegion()
 
--- a/wx/lib/plot/examples/demo.py
+++ b/wx/lib/plot/examples/demo.py
@@ -984,7 +984,7 @@ class PlotDemoMainFrame(wx.Frame):
 
         sx, sy = mDataDict["scaledXY"]  # scaled x,y of closest point
         # 10by10 square centered on point
-        dc.DrawRectangle(sx - 5, sy - 5, 10, 10)
+        dc.DrawRectangle(int(sx - 5), int(sy - 5), 10, 10)
         px, py = mDataDict["pointXY"]
         cNum = mDataDict["curveNum"]
         pntIn = mDataDict["pIndex"]
@@ -992,7 +992,7 @@ class PlotDemoMainFrame(wx.Frame):
         # make a string to display
         s = "Crv# %i, '%s', Pt. (%.2f,%.2f), PtInd %i" % (
             cNum, legend, px, py, pntIn)
-        dc.DrawText(s, sx, sy + 1)
+        dc.DrawText(s, int(sx), int(sy + 1))
 
 
 def run_demo():
--- a/wx/lib/plot/plotcanvas.py
+++ b/wx/lib/plot/plotcanvas.py
@@ -174,24 +174,24 @@ class PlotCanvas(wx.Panel):
 
         # Default Pens
         self._gridPen = wx.Pen(wx.Colour(180, 180, 180, 255),
-                               self._pointSize[0],
+                               int(self._pointSize[0]),
                                wx.PENSTYLE_DOT)
 
         self._centerLinePen = wx.Pen(wx.RED,
-                                     self._pointSize[0],
+                                     int(self._pointSize[0]),
                                      wx.PENSTYLE_SHORT_DASH)
 
         self._axesPen = wx.Pen(wx.BLACK,
-                               self._pointSize[0],
+                               int(self._pointSize[0]),
                                wx.PENSTYLE_SOLID)
 
         self._tickPen = wx.Pen(wx.BLACK,
-                               self._pointSize[0],
+                               int(self._pointSize[0]),
                                wx.PENSTYLE_SOLID)
         self._tickLength = tuple(-x * 2 for x in self._pointSize)
 
         self._diagonalPen = wx.Pen(wx.BLUE,
-                                   self._pointSize[0],
+                                   int(self._pointSize[0]),
                                    wx.PENSTYLE_DOT_DASH)
 
     def SetCursor(self, cursor):
@@ -1925,10 +1925,10 @@ class PlotCanvas(wx.Panel):
         # set clipping area so drawing does not occur outside axis box
         ptx, pty, rectWidth, rectHeight = self._point2ClientCoord(p1, p2)
         # allow graph to overlap axis lines by adding units to w and h
-        dc.SetClippingRegion(ptx * self._pointSize[0],
-                             pty * self._pointSize[1],
-                             rectWidth * self._pointSize[0] + 2,
-                             rectHeight * self._pointSize[1] + 1)
+        dc.SetClippingRegion(int(ptx * self._pointSize[0]),
+                             int(pty * self._pointSize[1]),
+                             int(rectWidth * self._pointSize[0] + 2),
+                             int(rectHeight * self._pointSize[1] + 1))
         # Draw the lines and markers
 #        start = _time.perf_counter()
         graphics.draw(dc)
@@ -2280,7 +2280,7 @@ class PlotCanvas(wx.Panel):
             pnt = ((trhc[0] + legendLHS + legendSymExt[0]
                     + 5 * self._pointSize[0]),
                    trhc[1] + s + lineHeight / 2. - legendTextExt[1] / 2)
-            dc.DrawText(o.getLegend(), pnt[0], pnt[1])
+            dc.DrawText(o.getLegend(), int(pnt[0]), int(pnt[1]))
         dc.SetFont(self._getFont(self._fontSizeAxis))  # reset
 
     def _titleLablesWH(self, dc, graphics):
@@ -2329,7 +2329,7 @@ class PlotCanvas(wx.Panel):
         dc.SetPen(wx.Pen(wx.BLACK))
         dc.SetBrush(wx.Brush(wx.WHITE, wx.BRUSHSTYLE_TRANSPARENT))
         dc.SetLogicalFunction(wx.INVERT)
-        dc.DrawRectangle(ptx, pty, rectWidth, rectHeight)
+        dc.DrawRectangle(int(ptx), int(pty), int(rectWidth), int(rectHeight))
         dc.SetLogicalFunction(wx.COPY)
 
     def _getFont(self, size):
@@ -2423,7 +2423,7 @@ class PlotCanvas(wx.Panel):
         # increases thickness for printing only
         pen = self.gridPen
         penWidth = self.printerScale * pen.GetWidth()
-        pen.SetWidth(penWidth)
+        pen.SetWidth(int(penWidth))
         dc.SetPen(pen)
 
         x, y, width, height = self._point2ClientCoord(p1, p2)
@@ -2432,13 +2432,13 @@ class PlotCanvas(wx.Panel):
             if self.enableGrid[0]:
                 for x, _ in xticks:
                     pt = scale_and_shift_point(x, p1[1], scale, shift)
-                    dc.DrawLine(pt[0], pt[1], pt[0], pt[1] - height)
+                    dc.DrawLine(int(pt[0]), int(pt[1]), int(pt[0]), int(pt[1] - height))
 
         if self._ySpec != 'none':
             if self.enableGrid[1]:
                 for y, label in yticks:
                     pt = scale_and_shift_point(p1[0], y, scale, shift)
-                    dc.DrawLine(pt[0], pt[1], pt[0] + width, pt[1])
+                    dc.DrawLine(int(pt[0]), int(pt[1]), int(pt[0] + width), int(pt[1]))
 
     @TempStyle('pen')
     def _drawTicks(self, dc, p1, p2, scale, shift, xticks, yticks):
@@ -2471,7 +2471,7 @@ class PlotCanvas(wx.Panel):
         # increases thickness for printing only
         pen = self.tickPen
         penWidth = self.printerScale * pen.GetWidth()
-        pen.SetWidth(penWidth)
+        pen.SetWidth(int(penWidth))
         dc.SetPen(pen)
 
         # lengthen lines for printing
@@ -2484,13 +2484,13 @@ class PlotCanvas(wx.Panel):
                 lines = []
                 for x, label in xticks:
                     pt = scale_and_shift_point(x, p1[1], scale, shift)
-                    lines.append((pt[0], pt[1], pt[0], pt[1] - xTickLength))
+                    lines.append((int(pt[0]), int(pt[1]), int(pt[0]), int(pt[1] - xTickLength)))
                 dc.DrawLineList(lines)
             if ticks.top:
                 lines = []
                 for x, label in xticks:
                     pt = scale_and_shift_point(x, p2[1], scale, shift)
-                    lines.append((pt[0], pt[1], pt[0], pt[1] + xTickLength))
+                    lines.append((int(pt[0]), int(pt[1]), int(pt[0]), int(pt[1] + xTickLength)))
                 dc.DrawLineList(lines)
 
         if self.ySpec != 'none':
@@ -2498,13 +2498,13 @@ class PlotCanvas(wx.Panel):
                 lines = []
                 for y, label in yticks:
                     pt = scale_and_shift_point(p1[0], y, scale, shift)
-                    lines.append((pt[0], pt[1], pt[0] + yTickLength, pt[1]))
+                    lines.append((int(pt[0]), int(pt[1]), int(pt[0] + yTickLength), int(pt[1])))
                 dc.DrawLineList(lines)
             if ticks.right:
                 lines = []
                 for y, label in yticks:
                     pt = scale_and_shift_point(p2[0], y, scale, shift)
-                    lines.append((pt[0], pt[1], pt[0] - yTickLength, pt[1]))
+                    lines.append((int(pt[0]), int(pt[1]), int(pt[0] - yTickLength), int(pt[1])))
                 dc.DrawLineList(lines)
 
     @TempStyle('pen')
@@ -2531,25 +2531,25 @@ class PlotCanvas(wx.Panel):
         # increases thickness for printing only
         pen = self.centerLinePen
         penWidth = self.printerScale * pen.GetWidth()
-        pen.SetWidth(penWidth)
+        pen.SetWidth(int(penWidth))
         dc.SetPen(pen)
 
         if self._centerLinesEnabled in ('Horizontal', True):
             y1 = scale[1] * p1[1] + shift[1]
             y2 = scale[1] * p2[1] + shift[1]
             y = (y1 - y2) / 2.0 + y2
-            dc.DrawLine(scale[0] * p1[0] + shift[0],
-                        y,
-                        scale[0] * p2[0] + shift[0],
-                        y)
+            dc.DrawLine(int(scale[0] * p1[0] + shift[0]),
+                        int(y),
+                        int(scale[0] * p2[0] + shift[0]),
+                        int(y))
         if self._centerLinesEnabled in ('Vertical', True):
             x1 = scale[0] * p1[0] + shift[0]
             x2 = scale[0] * p2[0] + shift[0]
             x = (x1 - x2) / 2.0 + x2
-            dc.DrawLine(x,
-                        scale[1] * p1[1] + shift[1],
-                        x,
-                        scale[1] * p2[1] + shift[1])
+            dc.DrawLine(int(x),
+                        int(scale[1] * p1[1] + shift[1]),
+                        int(x),
+                        int(scale[1] * p2[1] + shift[1]))
 
     @TempStyle('pen')
     def _drawDiagonals(self, dc, p1, p2, scale, shift):
@@ -2575,19 +2575,19 @@ class PlotCanvas(wx.Panel):
         """
         pen = self.diagonalPen
         penWidth = self.printerScale * pen.GetWidth()
-        pen.SetWidth(penWidth)
+        pen.SetWidth(int(penWidth))
         dc.SetPen(pen)
 
         if self._diagonalsEnabled in ('Bottomleft-Topright', True):
-            dc.DrawLine(scale[0] * p1[0] + shift[0],
-                        scale[1] * p1[1] + shift[1],
-                        scale[0] * p2[0] + shift[0],
-                        scale[1] * p2[1] + shift[1])
+            dc.DrawLine(int(scale[0] * p1[0] + shift[0]),
+                        int(scale[1] * p1[1] + shift[1]),
+                        int(scale[0] * p2[0] + shift[0]),
+                        int(scale[1] * p2[1] + shift[1]))
         if self._diagonalsEnabled in ('Bottomright-Topleft', True):
-            dc.DrawLine(scale[0] * p1[0] + shift[0],
-                        scale[1] * p2[1] + shift[1],
-                        scale[0] * p2[0] + shift[0],
-                        scale[1] * p1[1] + shift[1])
+            dc.DrawLine(int(scale[0] * p1[0] + shift[0]),
+                        int(scale[1] * p2[1] + shift[1]),
+                        int(scale[0] * p2[0] + shift[0]),
+                        int(scale[1] * p1[1] + shift[1]))
 
     @TempStyle('pen')
     def _drawAxes(self, dc, p1, p2, scale, shift):
@@ -2614,7 +2614,7 @@ class PlotCanvas(wx.Panel):
         # increases thickness for printing only
         pen = self.axesPen
         penWidth = self.printerScale * pen.GetWidth()
-        pen.SetWidth(penWidth)
+        pen.SetWidth(int(penWidth))
         dc.SetPen(pen)
 
         axes = self.enableAxes
@@ -2623,24 +2623,24 @@ class PlotCanvas(wx.Panel):
                 lower, upper = p1[0], p2[0]
                 a1 = scale_and_shift_point(lower, p1[1], scale, shift)
                 a2 = scale_and_shift_point(upper, p1[1], scale, shift)
-                dc.DrawLine(a1[0], a1[1], a2[0], a2[1])
+                dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1]))
             if axes.top:
                 lower, upper = p1[0], p2[0]
                 a1 = scale_and_shift_point(lower, p2[1], scale, shift)
                 a2 = scale_and_shift_point(upper, p2[1], scale, shift)
-                dc.DrawLine(a1[0], a1[1], a2[0], a2[1])
+                dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1]))
 
         if self.ySpec != 'none':
             if axes.left:
                 lower, upper = p1[1], p2[1]
                 a1 = scale_and_shift_point(p1[0], lower, scale, shift)
                 a2 = scale_and_shift_point(p1[0], upper, scale, shift)
-                dc.DrawLine(a1[0], a1[1], a2[0], a2[1])
+                dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1]))
             if axes.right:
                 lower, upper = p1[1], p2[1]
                 a1 = scale_and_shift_point(p2[0], lower, scale, shift)
                 a2 = scale_and_shift_point(p2[0], upper, scale, shift)
-                dc.DrawLine(a1[0], a1[1], a2[0], a2[1])
+                dc.DrawLine(int(a1[0]), int(a1[1]), int(a2[0]), int(a2[1]))
 
     @TempStyle('pen')
     def _drawAxesValues(self, dc, p1, p2, scale, shift, xticks, yticks):
@@ -2686,8 +2686,8 @@ class PlotCanvas(wx.Panel):
                     w = dc.GetTextExtent(label)[0]
                     pt = scale_and_shift_point(x, p1[1], scale, shift)
                     coords.append(
-                        (pt[0] - w/2,
-                         pt[1] + 2 * self._pointSize[1] - xTickLength)
+                        (int(pt[0] - w/2),
+                         int(pt[1] + 2 * self._pointSize[1] - xTickLength))
                     )
                 dc.DrawTextList(labels, coords)
 
@@ -2698,8 +2698,8 @@ class PlotCanvas(wx.Panel):
                     w, h = dc.GetTextExtent(label)
                     pt = scale_and_shift_point(x, p2[1], scale, shift)
                     coords.append(
-                        (pt[0] - w/2,
-                         pt[1] - 2 * self._pointSize[1] - h - xTickLength)
+                        (int(pt[0] - w/2),
+                         int(pt[1] - 2 * self._pointSize[1] - h - xTickLength))
                     )
                 dc.DrawTextList(labels, coords)
 
@@ -2712,8 +2712,8 @@ class PlotCanvas(wx.Panel):
                     w = dc.GetTextExtent(label)[0]
                     pt = scale_and_shift_point(p1[0], y, scale, shift)
                     coords.append(
-                        (pt[0] - w - 3 * self._pointSize[0] + yTickLength,
-                         pt[1] - 0.5 * h)
+                        (int(pt[0] - w - 3 * self._pointSize[0] + yTickLength),
+                         int(pt[1] - 0.5 * h))
                     )
                 dc.DrawTextList(labels, coords)
 
@@ -2725,8 +2725,8 @@ class PlotCanvas(wx.Panel):
                     w = dc.GetTextExtent(label)[0]
                     pt = scale_and_shift_point(p2[0], y, scale, shift)
                     coords.append(
-                        (pt[0] + 3 * self._pointSize[0] + yTickLength,
-                         pt[1] - 0.5 * h)
+                        (int(pt[0] + 3 * self._pointSize[0] + yTickLength),
+                         int(pt[1] - 0.5 * h))
                     )
                 dc.DrawTextList(labels, coords)
 
@@ -2785,7 +2785,7 @@ class PlotCanvas(wx.Panel):
             + (self.plotbox_size[0] - lhsW - rhsW) / 2. - titleWH[0] / 2.,
             self.plotbox_origin[1] - self.plotbox_size[1]
         )
-        dc.DrawText(graphics.title, titlePos[0], titlePos[1])
+        dc.DrawText(graphics.title, int(titlePos[0]), int(titlePos[1]))
 
     def _drawAxesLabels(self, dc, graphics, lhsW, rhsW, bottomH, topH,
                         xLabelWH, yLabelWH):
@@ -2806,7 +2806,7 @@ class PlotCanvas(wx.Panel):
             + (self.plotbox_size[0] - lhsW - rhsW) / 2. - xLabelWH[0] / 2.,
             self.plotbox_origin[1] - xLabelWH[1] - yTickLength
         )
-        dc.DrawText(graphics.xLabel, xLabelPos[0], xLabelPos[1])
+        dc.DrawText(graphics.xLabel, int(xLabelPos[0]), int(xLabelPos[1]))
         yLabelPos = (
             self.plotbox_origin[0] - 3 * self._pointSize[0] + xTickLength,
             self.plotbox_origin[1] - bottomH
@@ -2814,7 +2814,7 @@ class PlotCanvas(wx.Panel):
         )
         if graphics.yLabel:  # bug fix for Linux
             dc.DrawRotatedText(
-                graphics.yLabel, yLabelPos[0], yLabelPos[1], 90)
+                graphics.yLabel, int(yLabelPos[0]), int(yLabelPos[1]), 90)
 
     @TempStyle('pen')
     def _drawPlotAreaLabels(self, dc, graphics, lhsW, rhsW, titleWH,
@@ -2942,7 +2942,7 @@ class PlotCanvas(wx.Panel):
         if pos >= 0:
             pagesize = int((r_current[1] - r_current[0]) / unit)
 
-            self.sb_hor.SetScrollbar(pos, pagesize, sbfullrange, pagesize)
+            self.sb_hor.SetScrollbar(pos, pagesize, int(sbfullrange), pagesize)
             self._sb_xunit = unit
             needScrollbars = needScrollbars or (pagesize != sbfullrange)
         else:
@@ -2964,7 +2964,7 @@ class PlotCanvas(wx.Panel):
         if pos >= 0:
             pagesize = int((r_current[1] - r_current[0]) / unit)
             pos = (sbfullrange - 1 - pos - pagesize)
-            self.sb_vert.SetScrollbar(pos, pagesize, sbfullrange, pagesize)
+            self.sb_vert.SetScrollbar(int(pos), pagesize, int(sbfullrange), pagesize)
             self._sb_yunit = unit
             needScrollbars = needScrollbars or (pagesize != sbfullrange)
         else:
--- a/wx/lib/plot/polyobjects.py
+++ b/wx/lib/plot/polyobjects.py
@@ -417,7 +417,7 @@ class PolyLine(PolyPoints):
 
         if not isinstance(colour, wx.Colour):
             colour = wx.Colour(colour)
-        pen = wx.Pen(colour, width, style)
+        pen = wx.Pen(colour, int(width), style)
         pen.SetCap(wx.CAP_BUTT)
         dc.SetPen(pen)
         if coord is None:
@@ -518,7 +518,7 @@ class PolySpline(PolyLine):
         style = self.attributes['style']
         if not isinstance(colour, wx.Colour):
             colour = wx.Colour(colour)
-        pen = wx.Pen(colour, width, style)
+        pen = wx.Pen(colour, int(width), style)
         pen.SetCap(wx.CAP_ROUND)
         dc.SetPen(pen)
         if coord is None:
@@ -590,7 +590,7 @@ class PolyMarker(PolyPoints):
         if fillcolour and not isinstance(fillcolour, wx.Colour):
             fillcolour = wx.Colour(fillcolour)
 
-        dc.SetPen(wx.Pen(colour, width))
+        dc.SetPen(wx.Pen(colour, int(width)))
         if fillcolour:
             dc.SetBrush(wx.Brush(fillcolour, fillstyle))
         else:
@@ -618,6 +618,7 @@ class PolyMarker(PolyPoints):
         dc.DrawEllipseList(rect.astype(np.int32))
 
     def _dot(self, dc, coords, size=1):
+        coords = [(int(c[0]), int(c[1])) for c in coords]
         dc.DrawPointList(coords)
 
     def _square(self, dc, coords, size=1):
@@ -699,7 +700,7 @@ class PolyBarsBase(PolyPoints):
 
         if not isinstance(pencolour, wx.Colour):
             pencolour = wx.Colour(pencolour)
-        pen = wx.Pen(pencolour, penwidth, penstyle)
+        pen = wx.Pen(pencolour, int(penwidth), penstyle)
         pen.SetCap(wx.CAP_BUTT)
 
         if not isinstance(fillcolour, wx.Colour):
@@ -790,6 +791,7 @@ class PolyBars(PolyBarsBase):
                 raise TypeError(err_str.format(type(barwidth)))
 
             rects = [self.calc_rect(x, y, w) for x, y, w in pts]
+            rects = [(int(r[0]), int(r[1]), int(r[2]), int(r[3])) for r in rects]
             dc.DrawRectangleList(rects)
         else:
             dc.DrawLines(coord)  # draw legend line
@@ -858,6 +860,8 @@ class PolyHistogram(PolyBarsBase):
             rects = [self.calc_rect(y, low, high)
                      for y, (low, high)
                      in zip(self.hist, self.bins)]
+            rects = [(int(r[0]), int(r[1]), int(r[2]), int(r[3]))
+                     for r in rects]
 
             dc.DrawRectangleList(rects)
         else:
@@ -1114,10 +1118,10 @@ class PolyBoxPlot(PolyPoints):
                                       self.currentShift)
 
         # rectangles are drawn (left, top, width, height) so adjust
-        iqr_box = [iqr_box[0][0],                   # X (left)
-                   iqr_box[0][1],                   # Y (top)
-                   iqr_box[1][0] - iqr_box[0][0],   # Width
-                   iqr_box[1][1] - iqr_box[0][1]]   # Height
+        iqr_box = [int(iqr_box[0][0]),                   # X (left)
+                   int(iqr_box[0][1]),                   # Y (top)
+                   int(iqr_box[1][0] - iqr_box[0][0]),   # Width
+                   int(iqr_box[1][1] - iqr_box[0][1])]   # Height
 
         box_pen = wx.Pen(wx.BLACK, 3, wx.PENSTYLE_SOLID)
         box_brush = wx.Brush(wx.GREEN, wx.BRUSHSTYLE_SOLID)
@@ -1503,7 +1507,7 @@ class PlotPrintout(wx.Printout):
         self.graph._setSize(plotAreaW, plotAreaH)
 
         # Set offset and scale
-        dc.SetDeviceOrigin(pixLeft, pixTop)
+        dc.SetDeviceOrigin(int(pixLeft), int(pixTop))
 
         # Thicken up pens and increase marker size for printing
         ratioW = float(plotAreaW) / clientDcSize[0]
--- a/wx/lib/popupctl.py
+++ b/wx/lib/popupctl.py
@@ -124,7 +124,7 @@ class PopupDialog(wx.Dialog):
         selfSize = self.GetSize()
         tcSize = self.ctrl.GetSize()
 
-        pos.x -= (selfSize.width - tcSize.width) / 2
+        pos.x -= (selfSize.width - tcSize.width) // 2
         if pos.x + selfSize.width > dSize.width:
             pos.x = dSize.width - selfSize.width
         if pos.x < 0:
--- a/wx/lib/scrolledpanel.py
+++ b/wx/lib/scrolledpanel.py
@@ -222,4 +222,4 @@ class ScrolledPanel(wx.ScrolledWindow):
         # if we need to adjust
         if new_vs_x != -1 or new_vs_y != -1:
             #print("%s: (%s, %s)" % (self.GetName(), new_vs_x, new_vs_y))
-            self.Scroll(new_vs_x, new_vs_y)
+            self.Scroll(int(new_vs_x), int(new_vs_y))
--- a/wx/lib/throbber.py
+++ b/wx/lib/throbber.py
@@ -200,11 +200,11 @@ class Throbber(wx.Panel):
         """
         dc.DrawBitmap(self.submaps[self.sequence[self.current]], 0, 0, True)
         if self.overlay and self.showOverlay:
-            dc.DrawBitmap(self.overlay, self.overlayX, self.overlayY, True)
+            dc.DrawBitmap(self.overlay, int(self.overlayX), int(self.overlayY), True)
         if self.label and self.showLabel:
-            dc.DrawText(self.label, self.labelX, self.labelY)
+            dc.DrawText(self.label, int(self.labelX), int(self.labelY))
             dc.SetTextForeground(wx.WHITE)
-            dc.DrawText(self.label, self.labelX-1, self.labelY-1)
+            dc.DrawText(self.label, int(self.labelX-1), int(self.labelY-1))
 
 
     def OnPaint(self, event):
--- a/wx/lib/ticker.py
+++ b/wx/lib/ticker.py
@@ -86,7 +86,7 @@ class Ticker(wx.Control):
     def Start(self):
         """Starts the text moving"""
         if not self.timer.IsRunning():
-            self.timer.Start(1000 / self._fps)
+            self.timer.Start(1000 // self._fps)
 
 
     def IsTicking(self):
@@ -208,7 +208,7 @@ class Ticker(wx.Control):
             offx = self._offset - self._extent[0]
         else:
             offx = self.GetSize()[0] - self._offset
-        offy = (self.GetSize()[1] - self._extent[1]) / 2 #centered vertically
+        offy = (self.GetSize()[1] - self._extent[1]) // 2 #centered vertically
         dc.DrawText(self._text, offx, offy)
 
 
openSUSE Build Service is sponsored by