use paint region instead of clip
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend
index 6c6c378..625d5e5 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/CellLayerRenderer.xtend
@@ -16,21 +16,15 @@
 	override renderLayer(Layer layer, Canvas canvas) {
 		canvas.graphicsContext2D.clearRect(0, 0, canvas.boundsInLocal.width, canvas.boundsInLocal.height)
 
-		for (columnPosition : 0 .. layer.columnCount)
-			for (rowPosition : 0 .. layer.rowCount) {
+		for (columnPosition : 0 ..< layer.columnCount)
+			for (rowPosition : 0 ..< layer.rowCount) {
 				val cell = layer.getCell(columnPosition, rowPosition)
-				val newClip = cell.clipBounds
 				
-				val originalClip = canvas.clip
-				
-				canvas.clip = newClip
-				layerCellRenderer.renderLayerCell(cell, canvas, newClip)
-				
-				canvas.clip = originalClip
+				layerCellRenderer.renderLayerCell(cell, canvas, cell.getPaintRegion)
 			}
 	}
 	
-	protected def getClipBounds(LayerCell cell) {
+	protected def getPaintRegion(LayerCell cell) {
 		cell.pixelBounds.toJavaFXRectangle
 	}
 
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend
index 8df9f89..82075f9 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/GridLineCellLayerRenderer.xtend
@@ -20,13 +20,14 @@
 	
 	def drawGridLines(Canvas canvas, Layer layer) {
 		val gc = canvas.graphicsContext2D
+		
 		gc.stroke = Color::BLUE
 		
 		val pixelWidth = layer.pixelWidth
 		val pixelHeight = layer.pixelHeight
 		
-		for (columnPosition : 0 .. layer.columnCount)
-			for (rowPosition : 0 .. layer.rowCount) {
+		for (columnPosition : 0 ..< layer.columnCount)
+			for (rowPosition : 0 ..< layer.rowCount) {
 				val startX = layer.getStartXPixelOfColumnPosition(columnPosition)
 				val startY = layer.getStartYPixelOfRowPosition(rowPosition)
 				
@@ -44,8 +45,8 @@
 			}
 	}
 	
-	override protected getClipBounds(LayerCell cell) {
-		val cellBounds = super.getClipBounds(cell)
+	override protected getPaintRegion(LayerCell cell) {
+		val cellBounds = super.getPaintRegion(cell)
 		
 		new Rectangle(
 			cellBounds.x + 10,
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend
index 8bda891..1f0768c 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/LayerRenderer.xtend
@@ -5,6 +5,10 @@
 
 interface LayerRenderer {
 	
+	/**
+	 * @param layer The layer to render.
+	 * @param canvas The canvas to render into.
+	 */
 	def void renderLayer(Layer layer, Canvas canvas)
 	
 }
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend
index eb8e312..456eb28 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/DefaultLayerCellRenderer.xtend
@@ -7,15 +7,15 @@
 
 class DefaultLayerCellRenderer implements LayerCellRenderer {
 
-	override renderLayerCell(LayerCell cell, Canvas canvas, Rectangle clipBounds) {
+	override renderLayerCell(LayerCell cell, Canvas canvas, Rectangle paintRegion) {
 		val text = cell.dataValue.toString
 		
 		// Draw text
 		
 		val gc = canvas.graphicsContext2D
 
-		val centerX = clipBounds.x + (clipBounds.width / 2)
-		val centerY = clipBounds.y + (clipBounds.height / 2)
+		val centerX = paintRegion.x + (paintRegion.width / 2)
+		val centerY = paintRegion.y + (paintRegion.height / 2)
 
 		val fontMetrics = Toolkit::toolkit.fontLoader.getFontMetrics(gc.font)
 		val textWidth = fontMetrics.computeStringWidth(text)
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend
index 9159183..6fa7d0a 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/layer/cell/LayerCellRenderer.xtend
@@ -9,10 +9,10 @@
 	/**
 	 * @param cell The cell to render.
 	 * @param canvas The canvas to render into.
-	 * @param clipBounds The rectangular region of the canvas to render into. This clipping region should have already been set on the canvas.
-	 * Note that the clip bounds of the canvas may be different than the pixel bounds of the cell.
+	 * @param paintRegion The rectangular region of the canvas to render into.
+	 * Note that the paint region of the canvas may be different than the pixel bounds of the cell.
 	 * For example, the cell bounds may have been adjusted to make room for grid lines.
 	 */
-	def void renderLayerCell(LayerCell cell, Canvas canvas, Rectangle clipBounds)
+	def void renderLayerCell(LayerCell cell, Canvas canvas, Rectangle paintRegion)
 
 }