 
 	private func screenToDrawing( location:CGPoint ) -> CGPoint {
 		return location.subtract( viewport.origin )
+	}
+
+	private func drawingToScreen( rect:CGRect ) -> CGRect {
+		return rect.rectByOffsetting(dx: self.viewport.origin.x, dy: self.viewport.origin.y)
 	}
 
 	private var _activeStroke:Stroke?

	func undo() {
		if let drawing = self.drawing {
			if let dirtyRect = drawing.popStroke() {
				view?.setNeedsDisplayInRect(dirtyRect)
			} else {
				view?.setNeedsDisplay()
			}

					(image:UIImage, dirtyRect:CGRect ) in
					if !dirtyRect.isNull {

						self.view?.setNeedsDisplayInRect( self.drawingToScreen(dirtyRect) )

					} else {
						self.view?.setNeedsDisplay()
