diff --git a/NatTable/core.bnd b/NatTable/core.bnd
index 717ffbf..f45a7d1 100644
--- a/NatTable/core.bnd
+++ b/NatTable/core.bnd
@@ -1,4 +1,6 @@
-Export-Package: org.eclipse.nebula.widgets.nattable.core.data,\
+Export-Package: org.eclipse.nebula.widgets.nattable.core.command,\
+	org.eclipse.nebula.widgets.nattable.core.data,\
+	org.eclipse.nebula.widgets.nattable.core.event,\
 	org.eclipse.nebula.widgets.nattable.core.geometry,\
 	org.eclipse.nebula.widgets.nattable.core.graphics,\
 	org.eclipse.nebula.widgets.nattable.core.layer,\
diff --git a/NatTable/renderer.swt.bnd b/NatTable/renderer.swt.bnd
index 1c12c03..d7bc340 100644
--- a/NatTable/renderer.swt.bnd
+++ b/NatTable/renderer.swt.bnd
@@ -4,5 +4,5 @@
 	org.eclipse.nebula.widgets.nattable.renderer.swt.event.binding,\
 	org.eclipse.nebula.widgets.nattable.renderer.swt.event.matcher,\
 	org.eclipse.nebula.widgets.nattable.renderer.swt.event.mode,\
-	org.eclipse.nebula.widgets.nattable.renderer.swt.geometry,\
-	org.eclipse.nebula.widgets.nattable.renderer.swt.graphics
\ No newline at end of file
+	org.eclipse.nebula.widgets.nattable.renderer.swt.graphics,\
+	org.eclipse.nebula.widgets.nattable.renderer.swt.layer.viewport
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/packageinfo b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/command/packageinfo
similarity index 100%
copy from NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/packageinfo
copy to NatTable/src/org/eclipse/nebula/widgets/nattable/core/command/packageinfo
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/packageinfo b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/event/packageinfo
similarity index 100%
copy from NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/packageinfo
copy to NatTable/src/org/eclipse/nebula/widgets/nattable/core/event/packageinfo
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
deleted file mode 100644
index fe547bf..0000000
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.core.geometry
-
-/**
- * Represents a two-dimensional pixel area.
- */
-interface PixelArea {
-	
-	def PixelRange getHorizontalPixelRange()
-	def PixelRange getVerticalPixelRange()
-	
-}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRangeImpl.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRangeImpl.xtend
new file mode 100644
index 0000000..de97a45
--- /dev/null
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRangeImpl.xtend
@@ -0,0 +1,9 @@
+package org.eclipse.nebula.widgets.nattable.core.geometry
+
+@Data
+class PixelRangeImpl implements PixelRange {
+	
+	int start
+	int size
+	
+}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerPainter.xtend
index 7648462..64ec2b7 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerPainter.xtend
@@ -1,13 +1,15 @@
 package org.eclipse.nebula.widgets.nattable.core.layer
 
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 import org.eclipse.nebula.widgets.nattable.core.graphics.GraphicsContext
 
 interface LayerPainter<T extends Layer> {
 	
 	/**
 	 * @param layer The layer to render.
+	 * @param paintBounds The rectangular pixel area to paint into.
 	 * @param gc The graphics context to render into.
 	 */
-	def void paintLayer(T layer, GraphicsContext gc)
+	def void paintLayer(T layer, PixelRectangle paintBounds, GraphicsContext gc)
 	
 }
\ No newline at end of file
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 dd0d5aa..7e0d5d5 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,5 +1,6 @@
 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
@@ -15,7 +16,7 @@
 	
 	// LayerPainter interface
 
-	override paintLayer(Layer layer, GraphicsContext gc) {
+	override paintLayer(Layer layer, PixelRectangle paintBounds, GraphicsContext gc) {
 //		gc.clearRect(0, 0, canvas.boundsInLocal.width, canvas.boundsInLocal.height)
 
 		for (columnPosition : 0 ..< layer.getColumnCount)
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/GridLineCellLayerPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/GridLineCellLayerPainter.xtend
index de3f8f8..07382fb 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/GridLineCellLayerPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/GridLineCellLayerPainter.xtend
@@ -12,9 +12,9 @@
 	
 	// LayerPainter interface
 	
-	override paintLayer(Layer layer, GraphicsContext gc) {
+	override paintLayer(Layer layer, PixelRectangle paintBounds, GraphicsContext gc) {
 		// Draw cells
-		super.paintLayer(layer, gc)
+		super.paintLayer(layer, paintBounds, gc)
 		
 		// Draw grid lines
 		drawGridLines(layer, gc)
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend
index 830c496..6216376 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend
@@ -12,24 +12,32 @@
 	
 	@Inject extension PainterFactory
 	
-	override paintLayer(CompositeLayer compositeLayer, GraphicsContext gc) {
+	override paintLayer(CompositeLayer compositeLayer, PixelRectangle paintBounds, GraphicsContext gc) {
 		var yOffset = 0
-		for (row : compositeLayer.rows) {
-			var xOffset = 0
+		for (compositeRowPosition : 0 ..< compositeLayer.rows.size) {
+			val compositeRow = compositeLayer.rows.get(compositeRowPosition)
+			val isLastCompositeRow = compositeRowPosition == compositeLayer.rows.size - 1
 			
-			for (childLayer : row.childLayers) {
+			var xOffset = 0
+			for (compositeColumnPosition : 0 ..< compositeRow.childLayers.size) {
+				val childLayer = compositeRow.childLayers.get(compositeColumnPosition)
+				val isLastCompositeColumn = compositeColumnPosition == compositeRow.childLayers.size - 1
+				
 				gc.pushState
 				gc.translate(xOffset, yOffset)
-				if (childLayer.pixelWidth <= 0 || childLayer.pixelHeight <= 0)
-					println("oh no!")
-				gc.clipBounds = new PixelRectangle(0, 0, childLayer.pixelWidth, childLayer.pixelHeight)
-				childLayer.layerPainter.paintLayer(childLayer, gc)
+				
+				val pixelWidth = if (isLastCompositeColumn) paintBounds.x + paintBounds.width - xOffset else childLayer.pixelWidth
+				val pixelHeight = if (isLastCompositeRow) paintBounds.y + paintBounds.height - yOffset else childLayer.pixelHeight
+				val childPaintBounds = new PixelRectangle(0, 0, pixelWidth, pixelHeight)
+				
+				gc.clipBounds = childPaintBounds
+				childLayer.layerPainter.paintLayer(childLayer, childPaintBounds, gc)
 				gc.popState
 				
 				xOffset = xOffset + childLayer.pixelWidth
 			}
 			
-			yOffset = yOffset + row.childLayers.get(0).pixelHeight
+			yOffset = yOffset + compositeRow.childLayers.get(0).pixelHeight
 		}
 	}
 	
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend
index 43453bc..6587455 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend
@@ -51,10 +51,8 @@
 	}
 	
 	def void handleResize() {
-		println(visiblePixelRange)
-		
 		// If the visible pixel size is greater than the content size, move origin to fill as much content as possible.
-		val additionalSize = visiblePixelRange.end - underlyingAxis.pixelSize
+		val additionalSize = getVisiblePixelRange.end - underlyingAxis.pixelSize
 		if (additionalSize > 0)
 			pixelOrigin = Math::max(0, pixelOrigin - additionalSize)
 	}
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportLayer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportLayer.xtend
index d521ff3..94c9670 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportLayer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportLayer.xtend
@@ -1,6 +1,7 @@
 package org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport
 
-import org.eclipse.nebula.widgets.nattable.core.geometry.PixelArea
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRangeImpl
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 import org.eclipse.nebula.widgets.nattable.core.layer.Layer
 import org.eclipse.nebula.widgets.nattable.core.layer.impl.AbstractLayer
 
@@ -24,9 +25,9 @@
 		verticalAxis = new ViewportAxis(underlyingLayer.verticalAxis, [| fireEvent(new ScrollEvent) ])
 	}
 	
-	def void setPixelArea(PixelArea pixelArea) {
-		horizontalAxis.visiblePixelRange = pixelArea.horizontalPixelRange
-		verticalAxis.visiblePixelRange = pixelArea.verticalPixelRange
+	def void setVisiblePixelRectangle(PixelRectangle visiblePixelRectangle) {
+		horizontalAxis.visiblePixelRange = new PixelRangeImpl(visiblePixelRectangle.x, visiblePixelRectangle.width)
+		verticalAxis.visiblePixelRange = new PixelRangeImpl(visiblePixelRectangle.y, visiblePixelRectangle.height)
 	}
 	
 	def Layer getUnderlyingLayer() { underlyingLayer }
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend
index d35ea7d..be221bd 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend
@@ -2,6 +2,7 @@
 
 import javafx.beans.value.ObservableValue
 import javafx.scene.canvas.Canvas
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 import org.eclipse.nebula.widgets.nattable.core.layer.Layer
 import org.eclipse.nebula.widgets.nattable.core.layer.impl.GridLineCellLayerPainter
 import org.eclipse.nebula.widgets.nattable.renderer.javafx.graphics.JavaFXGraphicsContext
@@ -27,7 +28,8 @@
 	}
 	
 	private def paintLayer() {
-		layer.layerPainter.paintLayer(layer, new JavaFXGraphicsContext(this.graphicsContext2D))
+		val paintBounds = new PixelRectangle(boundsInLocal.minX as int, boundsInLocal.minY as int, boundsInLocal.width as int, boundsInLocal.height as int)
+		layer.layerPainter.paintLayer(layer, paintBounds, new JavaFXGraphicsContext(this.graphicsContext2D))
 	}
 	
 	private def getLayerPainter(Layer layer) {
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
index 63afe90..ba6341c 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
@@ -1,6 +1,7 @@
 package org.eclipse.nebula.widgets.nattable.renderer.swt
 
 import com.google.inject.Injector
+import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRectangle
 import org.eclipse.nebula.widgets.nattable.core.graphics.PainterFactory
 import org.eclipse.nebula.widgets.nattable.core.layer.Layer
 import org.eclipse.nebula.widgets.nattable.renderer.swt.event.mode.Mode
@@ -15,7 +16,7 @@
 
 class SWTNatTable extends Canvas {
 
-	static val int DEFAULT_STYLE_OPTIONS = SWT::NO_BACKGROUND.bitwiseOr(SWT::NO_REDRAW_RESIZE).bitwiseOr(SWT::DOUBLE_BUFFERED)
+	static val int DEFAULT_STYLE_OPTIONS = SWT::NO_BACKGROUND.bitwiseOr(SWT::DOUBLE_BUFFERED).bitwiseOr(SWT::NO_REDRAW_RESIZE)
 	
 	extension Injector
 	extension PainterFactory
@@ -58,7 +59,8 @@
 	}
 	
 	private def paintLayer(GC gc) {
-		layer?.layerPainter?.paintLayer(layer, new SWTGraphicsContext(this, gc))
+		val paintBounds = new PixelRectangle(bounds.x, bounds.y, bounds.width, bounds.height)
+		layer?.layerPainter?.paintLayer(layer, paintBounds, new SWTGraphicsContext(this, gc))
 	}
 	
 }
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlHorizontalPixelRange.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlHorizontalPixelRange.xtend
deleted file mode 100644
index ed573e9..0000000
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlHorizontalPixelRange.xtend
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.renderer.swt.geometry
-
-import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRange
-import org.eclipse.swt.widgets.Control
-
-class SWTControlHorizontalPixelRange implements PixelRange {
-	
-	val Control control
-	
-	new(Control control) {
-		this.control = control
-	}
-	
-	override getStart() { control.bounds.x }
-	override getSize() { control.bounds.width }
-	
-	override toString() {
-		'''«class.name» start: «start», size: «size»'''
-	}
-	
-}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlPixelArea.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlPixelArea.xtend
deleted file mode 100644
index 060e742..0000000
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlPixelArea.xtend
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.renderer.swt.geometry
-
-import org.eclipse.nebula.widgets.nattable.core.geometry.PixelArea
-import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRange
-import org.eclipse.swt.widgets.Control
-
-class SWTControlPixelArea implements PixelArea {
-	
-	val Control control
-	val PixelRange horizontalPixelRange
-	val PixelRange verticalPixelRange
-	
-	new(Control control) {
-		this.control = control
-		horizontalPixelRange = new SWTControlHorizontalPixelRange(control)
-		verticalPixelRange = new SWTControlVerticalPixelRange(control)
-	}
-	
-	override getHorizontalPixelRange() { horizontalPixelRange }
-	override getVerticalPixelRange() { verticalPixelRange }
-	
-}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlVerticalPixelRange.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlVerticalPixelRange.xtend
deleted file mode 100644
index 9edf53d..0000000
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/SWTControlVerticalPixelRange.xtend
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.nebula.widgets.nattable.renderer.swt.geometry
-
-import org.eclipse.nebula.widgets.nattable.core.geometry.PixelRange
-import org.eclipse.swt.widgets.Control
-
-class SWTControlVerticalPixelRange implements PixelRange {
-	
-	val Control control
-	
-	new(Control control) {
-		this.control = control
-	}
-	
-	override getStart() { control.bounds.y }
-	override getSize() { control.bounds.height }
-	
-	override toString() {
-		'''«class.name» start: «start», size: «size»'''
-	}
-	
-}
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend
index a40626f..351c042 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend
@@ -49,9 +49,8 @@
 		composite
 	}
 	
-	def getSWTGC() {
-		gc
-	}
+	def getXOffset() { xOffset }
+	def getYOffset() { yOffset }
 	
 	// GraphicsContext interface
 	
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend
index fd6e8e1..f85ecb8 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend
@@ -1,15 +1,16 @@
 package org.eclipse.nebula.widgets.nattable.renderer.swt.layer.viewport
 
+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.LayerPainter
 import org.eclipse.nebula.widgets.nattable.core.layer.impl.GridLineCellLayerPainter
 import org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport.ViewportAxis
 import org.eclipse.nebula.widgets.nattable.core.layer.impl.viewport.ViewportLayer
-import org.eclipse.nebula.widgets.nattable.renderer.swt.geometry.SWTControlPixelArea
 import org.eclipse.nebula.widgets.nattable.renderer.swt.graphics.SWTGraphicsContext
 import org.eclipse.swt.SWT
 import org.eclipse.swt.graphics.Rectangle
 import org.eclipse.swt.widgets.Canvas
+import org.eclipse.swt.widgets.Display
 
 class SWTViewportLayerPainter implements LayerPainter<ViewportLayer> {
 	
@@ -17,21 +18,18 @@
 	
 	Canvas viewportCanvas
 	
-	override paintLayer(ViewportLayer viewportLayer, GraphicsContext gc) {
+	override paintLayer(ViewportLayer viewportLayer, PixelRectangle paintBounds, GraphicsContext gc) {
 		val swtGC = gc as SWTGraphicsContext
 		
+		viewportLayer.visiblePixelRectangle = paintBounds
+		
 		if (viewportCanvas == null) {
 			viewportCanvas = new Canvas(swtGC.SWTComposite, SWT::H_SCROLL.bitwiseOr(SWT::V_SCROLL))
-			
-			viewportLayer.pixelArea = new SWTControlPixelArea(viewportCanvas)
-			
-			// Event listener
-			
-			viewportLayer.addEventListener([ event | viewportCanvas.redraw ])
+			viewportCanvas.background = Display::getDefault.getSystemColor(SWT::COLOR_RED)
 			
 			// Paint listener
 			
-			viewportCanvas.addPaintListener([ event | defaultPainter.paintLayer(viewportLayer, new SWTGraphicsContext(viewportCanvas, event.gc)) ])
+			viewportCanvas.addPaintListener([ event | defaultPainter.paintLayer(viewportLayer, paintBounds, new SWTGraphicsContext(viewportCanvas, event.gc)) ])
 			
 			// ScrollBar handlers
 			
@@ -56,8 +54,10 @@
 			])
 		}
 		
-		val clipBounds = swtGC.SWTGC.clipping
-		viewportCanvas.bounds = new Rectangle(clipBounds.x, clipBounds.y, clipBounds.width, clipBounds.height)
+		// Resize viewport canvas
+		
+		val clipBounds = gc.clipBounds
+		viewportCanvas.bounds = new Rectangle(swtGC.getXOffset + clipBounds.x, swtGC.getYOffset + clipBounds.y, clipBounds.width, clipBounds.height)
 	}
 	
 }
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/packageinfo b/NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/packageinfo
similarity index 100%
rename from NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/geometry/packageinfo
rename to NatTable/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/packageinfo
