diff --git a/rootpy/plotting/canvas.py b/rootpy/plotting/canvas.py
index <HASH>..<HASH> 100644
--- a/rootpy/plotting/canvas.py
+++ b/rootpy/plotting/canvas.py
@@ -44,7 +44,8 @@ class Canvas(_PadBase, QROOT.TCanvas):
     def __init__(self,
                  width=None, height=None,
                  x=None, y=None,
-                 name=None, title=None):
+                 name=None, title=None,
+                 size_includes_decorations=False):
 
         # The following line will trigger finalSetup and start the graphics
         # thread if not started already
@@ -61,4 +62,12 @@ class Canvas(_PadBase, QROOT.TCanvas):
         ROOT.kTRUE
         super(Canvas, self).__init__(x, y, width, height,
                                      name=name, title=title)
+        if not size_includes_decorations:
+            # Canvas dimensions include the window manager's decorations by
+            # default in vanilla ROOT. I think this is a bad default.
+            # Since in the most common case I don't care about the window
+            # decorations, the default will be to set the dimensions of the
+            # paintable area of the canvas.
+            self.SetWindowSize(width + (width - self.GetWw()),
+                               height + (height - self.GetWh()))
         self._post_init()
don't include canvas window manager decorations in canvas size by default