explicit paintBounds for CellPainter
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend
index 9178f42..7d29d7b 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/CellPainter.xtend
@@ -1,13 +1,15 @@
 package org.eclipse.nebula.widgets.nattable.core.layer.cell
 
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
 
 interface CellPainter {
 	
 	/**
 	 * @param cell The cell to paint.
+	 * @param paintBounds The rectangular pixel area to paint into.
 	 * @param gc The graphics context to paint into.
 	 */
-	def void paintCell(Cell cell, GraphicsContext gc)
+	def void paintCell(Cell cell, PixelRectangle paintBounds, GraphicsContext gc)
 	
 }
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend
index f12bb1f..29e2340 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/DefaultCellPainter.xtend
@@ -3,15 +3,15 @@
 import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
 import org.eclipse.nebula.widgets.nattable.core.layer.cell.Cell
 import org.eclipse.nebula.widgets.nattable.core.layer.cell.CellPainter
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 
 class DefaultCellPainter implements CellPainter {
 	
-	override paintCell(Cell cell, GraphicsContext gc) {
+	override paintCell(Cell cell, PixelRectangle paintBounds, GraphicsContext gc) {
 		val text = cell.dataValue.toString
 		
-		val clipBounds = gc.clipBounds
-		val centerX = clipBounds.x + (clipBounds.width / 2)
-		val centerY = clipBounds.y + (clipBounds.height / 2)
+		val centerX = paintBounds.x + (paintBounds.width / 2)
+		val centerY = paintBounds.y + (paintBounds.height / 2)
 
 		val textWidth = gc.calculateTextWidth(text)
 
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend
index 0cf2ad5..dd0d5aa 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/CellLayerPainter.xtend
@@ -1,6 +1,5 @@
 package org.eclipse.nebula.widgets.nattable.core.layer.impl
 
-import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
 import org.eclipse.nebula.widgets.nattable.core.layer.Layer
 import org.eclipse.nebula.widgets.nattable.core.layer.LayerPainter
@@ -23,10 +22,8 @@
 			for (rowPosition : 0 ..< layer.getRowCount) {
 				val cell = layer.getCell(columnPosition, rowPosition)
 				gc.pushState
-				val paintRegion = cell.paintRegion
-				gc.translate(paintRegion.x, paintRegion.y)
-				gc.clipBounds = new PixelRectangle(0, 0, paintRegion.width, paintRegion.height)
-				cellPainter.paintCell(cell, gc)
+				gc.clipBounds = cell.paintRegion
+				cellPainter.paintCell(cell, cell.paintRegion, gc)
 				gc.popState
 			}
 	}
@@ -34,7 +31,7 @@
 	//
 	
 	protected def getPaintRegion(Cell cell) {
-		cell.getPixelBounds
+		cell.pixelBounds
 	}
 	
 }
\ No newline at end of file