Because drawContents should work on the viewport, meaning that you shouldn't need to translate the painter if the viewport was set up correctly -- you draw directly on the viewport. How did you initialise the viewport?