use double for pixel coordinates
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/AxisTest.xtend b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/AxisTest.xtend
index d7f4169..da5a372 100644
--- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/AxisTest.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/AxisTest.xtend
@@ -10,17 +10,17 @@
 
 class AxisTest {
 	
-	def static testAxis(Axis axis, List<? extends Serializable> expectedIds, List<Integer> expectedPixels) {
+	def static testAxis(Axis axis, List<? extends Serializable> expectedIds, List<Double> expectedPixels) {
 		testAxis("", axis, expectedIds, expectedPixels)
 	}
 	
-	def static testAxis(String axisName, Axis axis, List<? extends Serializable> expectedIds, List<Integer> expectedPixels) {
+	def static testAxis(String axisName, Axis axis, List<? extends Serializable> expectedIds, List<Double> expectedPixels) {
 		// Segment count
 		assertEquals('''«axisName» getSegmentCount''', expectedIds.size, axis.segmentCount)
 		
 		// Start pixel of segment position
 		for (segmentPosition : 0 .. axis.segmentCount)
-			assertEquals('''«axisName» getStartPixelOfSegmentPosition(«segmentPosition»)''', expectedPixels.get(segmentPosition), axis.getStartPixelOfSegmentPosition(segmentPosition))
+			assertEquals('''«axisName» getStartPixelOfSegmentPosition(«segmentPosition»)''', expectedPixels.get(segmentPosition), axis.getStartPixelOfSegmentPosition(segmentPosition), 0)
 		
 		// Segment position of pixel location
 		assertEquals('''«axisName» < range getSegmentPositionOfPixelLocation(«expectedPixels.get(0) - 1»)''', -1, axis.getSegmentPositionOfPixelLocation(expectedPixels.get(0) - 1))
@@ -39,7 +39,7 @@
 			assertEquals('''«axisName» getSegmentPositionOfId(«segmentId»)''', expectedIds.indexOf(segmentId), axis.getSegmentPositionOfId(segmentId))
 		
 		// Pixel size
-		assertEquals('''«axisName» pixelSize''', expectedPixels.get(expectedPixels.size - 1) - expectedPixels.get(0), axis.pixelSize)
+		assertEquals('''«axisName» pixelSize''', expectedPixels.get(expectedPixels.size - 1) - expectedPixels.get(0), axis.pixelSize, 0)
 	}
 	
 }
\ No newline at end of file
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/ResizeAxisTest.xtend b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/ResizeAxisTest.xtend
index d6056d0..d679d10 100644
--- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/ResizeAxisTest.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/ResizeAxisTest.xtend
@@ -19,7 +19,7 @@
 		testAxis(
 			axis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -30,7 +30,7 @@
 		testAxis(
 			axis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 125, 225, 325 ]
+			#[ 0.0, 100.0, 125.0, 225.0, 325.0 ]
 		)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxisTest.xtend b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxisTest.xtend
index e848138..d2e8876 100644
--- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxisTest.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxisTest.xtend
@@ -24,14 +24,14 @@
 			"underlyingAxis",
 			underlyingAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 		
 		testAxis(
 			"hideShowAxis",
 			hideShowAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -43,7 +43,7 @@
 			"hide",
 			hideShowAxis,
 			#[ 1, 2, 3 ],
-			#[ 0, 100, 200, 300 ]
+			#[ 0.0, 100.0, 200.0, 300.0 ]
 		)
 		
 		hideShowAxis.showSegmentId(0)
@@ -52,7 +52,7 @@
 			"show",
 			hideShowAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -64,7 +64,7 @@
 			"hide",
 			hideShowAxis,
 			#[ 0, 2, 3 ],
-			#[ 0, 100, 200, 300 ]
+			#[ 0.0, 100.0, 200.0, 300.0 ]
 		)
 		
 		hideShowAxis.showSegmentId(1)
@@ -73,7 +73,7 @@
 			"show",
 			hideShowAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -85,7 +85,7 @@
 			"hide",
 			hideShowAxis,
 			#[ 0, 1, 2 ],
-			#[ 0, 100, 200, 300 ]
+			#[ 0.0, 100.0, 200.0, 300.0 ]
 		)
 		
 		hideShowAxis.showSegmentId(3)
@@ -94,7 +94,7 @@
 			"show",
 			hideShowAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -106,7 +106,7 @@
 			"hide 3",
 			hideShowAxis,
 			#[ 0, 1, 2 ],
-			#[ 0, 100, 200, 300 ]
+			#[ 0.0, 100.0, 200.0, 300.0 ]
 		)
 		
 		hideShowAxis.hideSegmentId(0)
@@ -115,7 +115,7 @@
 			"hide 0",
 			hideShowAxis,
 			#[ 1, 2 ],
-			#[ 0, 100, 200 ]
+			#[ 0.0, 100.0, 200.0 ]
 		)
 		
 		hideShowAxis.hideSegmentId(1)
@@ -124,7 +124,7 @@
 			"hide 1",
 			hideShowAxis,
 			#[ 2 ],
-			#[ 0, 100 ]
+			#[ 0.0, 100.0 ]
 		)
 		
 		hideShowAxis.showSegmentId(1)
@@ -133,7 +133,7 @@
 			"show 1",
 			hideShowAxis,
 			#[ 1, 2 ],
-			#[ 0, 100, 200 ]
+			#[ 0.0, 100.0, 200.0 ]
 		)
 		
 		hideShowAxis.showSegmentId(3)
@@ -142,7 +142,7 @@
 			"show 3",
 			hideShowAxis,
 			#[ 1, 2, 3 ],
-			#[ 0, 100, 200, 300 ]
+			#[ 0.0, 100.0, 200.0, 300.0 ]
 		)
 		
 		hideShowAxis.showSegmentId(0)
@@ -151,7 +151,7 @@
 			"show 0",
 			hideShowAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxisTest.xtend b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxisTest.xtend
index 62836f5..5327ac9 100644
--- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxisTest.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxisTest.xtend
@@ -24,14 +24,14 @@
 			"underlyingAxis",
 			underlyingAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 		
 		testAxis(
 			"reorderAxis",
 			reorderAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -43,7 +43,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 1, 2, 0, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -55,7 +55,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 1, 2, 3, 0 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -67,7 +67,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 2, 0, 1, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -79,7 +79,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 0, 2, 1, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -91,7 +91,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 0, 2, 1, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -103,7 +103,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 0, 2, 3, 1 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -115,7 +115,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 3, 0, 1, 2 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -127,7 +127,7 @@
 			"reorderAxis",
 			reorderAxis,
 			#[ 0, 1, 3, 2 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerTest.xtend b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerTest.xtend
index 5255783..68bb301 100644
--- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerTest.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerTest.xtend
@@ -43,14 +43,14 @@
 			"bodyLayer.horizontalAxis",
 			bodyLayer.horizontalAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 200, 400, 600, 800 ]
+			#[ 0.0, 200.0, 400.0, 600.0, 800.0 ]
 		)
 		
 		testAxis(
 			"bodyLayer.verticalAxis",
 			bodyLayer.verticalAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -60,14 +60,14 @@
 			"columnHeaderLayer.horizontalAxis",
 			columnHeaderLayer.horizontalAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 200, 400, 600, 800 ]
+			#[ 0.0, 200.0, 400.0, 600.0, 800.0 ]
 		)
 		
 		testAxis(
 			"columnHeaderLayer.verticalAxis",
 			columnHeaderLayer.verticalAxis,
 			#[ 0 ],
-			#[ 0, 20 ]
+			#[ 0.0, 20.0 ]
 		)
 	}
 	
@@ -77,14 +77,14 @@
 			"rowHeaderLayer.horizontalAxis",
 			rowHeaderLayer.horizontalAxis,
 			#[ 0 ],
-			#[ 0, 20 ]
+			#[ 0.0, 20.0 ]
 		)
 		
 		testAxis(
 			"rowHeaderLayer.verticalAxis",
 			rowHeaderLayer.verticalAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 100, 200, 300, 400 ]
+			#[ 0.0, 100.0, 200.0, 300.0, 400.0 ]
 		)
 	}
 	
@@ -94,14 +94,14 @@
 			"cornerLayer.horizontalAxis",
 			cornerLayer.horizontalAxis,
 			#[ 0 ],
-			#[ 0, 20 ]
+			#[ 0.0, 20.0 ]
 		)
 		
 		testAxis(
 			"cornerLayer.verticalAxis",
 			cornerLayer.verticalAxis,
 			#[ 0 ],
-			#[ 0, 20 ]
+			#[ 0.0, 20.0 ]
 		)
 	}
 	
@@ -111,14 +111,14 @@
 			"compositeLayer.horizontalAxis",
 			compositeLayer.horizontalAxis,
 			#[ 0, 0, 1, 2, 3 ],
-			#[ 0, 20, 220, 420, 620, 820 ]
+			#[ 0.0, 20.0, 220.0, 420.0, 620.0, 820.0 ]
 		)
 		
 		testAxis(
 			"compositeLayer.verticalAxis",
 			compositeLayer.verticalAxis,
 			#[ 0, 0, 1, 2, 3 ],
-			#[ 0, 20, 120, 220, 320, 420 ]
+			#[ 0.0, 20.0, 120.0, 220.0, 320.0, 420.0 ]
 		)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxisTest.xtend b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxisTest.xtend
index 287d776..69b7b5a 100644
--- a/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxisTest.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core.test/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxisTest.xtend
@@ -32,7 +32,7 @@
 			"underlyingAxis",
 			underlyingAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 2, 5, 12, 25 ]
+			#[ 0.0, 2.0, 5.0, 12.0, 25.0 ]
 		)
 		
 		// segment position: | 0 |  1  |      2      |            3            |
@@ -41,7 +41,7 @@
 			"viewportAxis",
 			viewportAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ 0, 2, 5, 12, 25 ]
+			#[ 0.0, 2.0, 5.0, 12.0, 25.0 ]
 		)
 	}
 	
@@ -55,7 +55,7 @@
 		testAxis(
 			viewportAxis,
 			#[ 0, 1 ],
-			#[ 0, 2, 5 ]
+			#[ 0.0, 2.0, 5.0 ]
 		)
 	}
 	
@@ -70,7 +70,7 @@
 		testAxis(
 			viewportAxis,
 			#[ 1, 2, 3 ],
-			#[ 0, 3, 10, 23 ]
+			#[ 0.0, 3.0, 10.0, 23.0 ]
 		)
 	}
 	
@@ -85,7 +85,7 @@
 		testAxis(
 			viewportAxis,
 			#[ 1, 2 ],
-			#[ 0, 3, 10 ]
+			#[ 0.0, 3.0, 10.0 ]
 		)
 	}
 	
@@ -100,7 +100,7 @@
 		testAxis(
 			viewportAxis,
 			#[ 0, 1, 2 ],
-			#[ 0, 2, 5, 12 ]
+			#[ 0.0, 2.0, 5.0, 12.0 ]
 		)
 	}
 	
@@ -115,7 +115,7 @@
 		testAxis(
 			viewportAxis,
 			#[ 2, 3 ],
-			#[ -3, 4, 17 ]
+			#[ -3.0, 4.0, 17.0 ]
 		)
 	}
 	
@@ -130,7 +130,7 @@
 		testAxis(
 			viewportAxis,
 			#[ 3 ],
-			#[ -5, 8 ]
+			#[ -5.0, 8.0 ]
 		)
 	}
 	
@@ -145,7 +145,7 @@
 		testAxis(
 			viewportAxis,
 			#[ 1, 2, 3 ],
-			#[ -2, 1, 8, 21 ]
+			#[ -2.0, 1.0, 8.0, 21.0 ]
 		)
 	}
 	
@@ -161,7 +161,7 @@
 			"before expand",
 			viewportAxis,
 			#[ 1, 2 ],
-			#[ -2, 1, 8 ]
+			#[ -2.0, 1.0, 8.0 ]
 		)
 		
 		//    segment position: | 0 |  1  |      2      |            3            |
@@ -174,7 +174,7 @@
 			"after expand",
 			viewportAxis,
 			#[ 1, 2, 3 ],
-			#[ -2, 1, 8, 21 ]
+			#[ -2.0, 1.0, 8.0, 21.0 ]
 		)
 	}
 	
@@ -190,7 +190,7 @@
 			"before expand",
 			viewportAxis,
 			#[ 1, 2 ],
-			#[ -2, 1, 8 ]
+			#[ -2.0, 1.0, 8.0 ]
 		)
 		
 		//    segment position: | 0 |  1  |      2      |            3            |
@@ -203,7 +203,7 @@
 			"after expand",
 			viewportAxis,
 			#[ 0, 1, 2, 3 ],
-			#[ -1, 1, 4, 11, 24 ]
+			#[ -1.0, 1.0, 4.0, 11.0, 24.0 ]
 		)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
index 40d6d3b..6aac6b8 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
@@ -3,7 +3,7 @@
 @Data
 class PixelArea {
 	
-	int width
-	int height
+	double width
+	double height
 	
 }
\ No newline at end of file
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelCoordinate.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelCoordinate.xtend
index 1e98b80..df81871 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelCoordinate.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelCoordinate.xtend
@@ -5,6 +5,6 @@
  */
 @Data
 class PixelCoordinate {
-	int x
-	int y
+	double x
+	double y
 }
\ No newline at end of file
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRectangle.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRectangle.xtend
index fcdd15d..b12d2d2 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRectangle.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelRectangle.xtend
@@ -5,10 +5,10 @@
  */
 class PixelRectangle {
 	val PixelCoordinate pixelOrigin
-	val int pixelWidth
-	val int pixelHeight
+	val double pixelWidth
+	val double pixelHeight
 	
-	new(int xPixel, int yPixel, int pixelWidth, int pixelHeight) {
+	new(double xPixel, double yPixel, double pixelWidth, double pixelHeight) {
 		this.pixelOrigin = new PixelCoordinate(xPixel, yPixel)
 		this.pixelWidth = pixelWidth
 		this.pixelHeight = pixelHeight
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/graphics/GraphicsContext.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/graphics/GraphicsContext.xtend
index fc261e0..7e17917 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/graphics/GraphicsContext.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/graphics/GraphicsContext.xtend
@@ -28,7 +28,7 @@
 
 	// Properties
 	
-	def void translate(int xOffset, int yOffset)
+	def void translate(double xOffset, double yOffset)
 	
 	def void setForegroundColor(Color foregroundColor)
 	
@@ -49,7 +49,7 @@
 	 * @param x the x coordinate of the top left corner of the rectangular area where the text is to be drawn
 	 * @param y the y coordinate of the top left corner of the rectangular area where the text is to be drawn
 	 */
-	def void drawText(String text, int x, int y)
+	def void drawText(String text, double x, double y)
 	
 	/**
 	 * Draws a line using the foreground color between the points 
@@ -60,7 +60,7 @@
 	 * @param x2 the second point's x coordinate
 	 * @param y2 the second point's y coordinate
 	 */
-	def void drawLine(int x1, int y1, int x2, int y2)
+	def void drawLine(double x1, double y1, double x2, double y2)
 	
 	/**
 	 * Draws a rectangle with the specified bounds using the foreground color.
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerInvariants.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerInvariants.xtend
index 47adab4..ce743d2 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerInvariants.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/LayerInvariants.xtend
@@ -32,7 +32,7 @@
 		layer.horizontalAxis.pixelSize
 	}
 	
-	def static getColumnPositionOfXPixel(Layer layer, int xPixel) {
+	def static getColumnPositionOfXPixel(Layer layer, double xPixel) {
 		layer.horizontalAxis.getSegmentPositionOfPixelLocation(xPixel)
 	}
 	
@@ -58,7 +58,7 @@
 		layer.verticalAxis.pixelSize
 	}
 	
-	def static getRowPositionOfYPixel(Layer layer, int yPixel) {
+	def static getRowPositionOfYPixel(Layer layer, double yPixel) {
 		layer.verticalAxis.getSegmentPositionOfPixelLocation(yPixel)
 	}
 	
@@ -68,7 +68,7 @@
 		layer.horizontalAxis.containsSegmentPosition(columnPosition) && layer.verticalAxis.containsSegmentPosition(rowPosition)
 	}
 	
-	def static boolean containsPixelLocation(Layer layer, int xPixel, int yPixel) {
+	def static boolean containsPixelLocation(Layer layer, double xPixel, double yPixel) {
 		layer.horizontalAxis.containsPixelLocation(xPixel) && layer.verticalAxis.containsPixelLocation(yPixel)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/Axis.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/Axis.xtend
index 6cced1a..604e878 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/Axis.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/Axis.xtend
@@ -23,7 +23,7 @@
 	 * @param segmentPosition
 	 * @return The start pixel location of the given segment position.
 	 */
-	def int getStartPixelOfSegmentPosition(int segmentPosition)
+	def double getStartPixelOfSegmentPosition(int segmentPosition)
 	
 	/**
 	 * Gets the position of the segment that is nearest to the the given pixel location.
@@ -33,7 +33,7 @@
 	 * If the given pixel location is less than 0, the segment position returned will be -1.
 	 * If the given pixel location is greater than the size of the axis, then the last segment position + 1 will be returned (= segment count).
 	 */
-	def int getSegmentPositionOfPixelLocation(int pixelLocation)
+	def int getSegmentPositionOfPixelLocation(double pixelLocation)
 
 	/**
 	 * @param segmentPosition
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/AxisInvariants.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/AxisInvariants.xtend
index 0b671ad..1914ed2 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/AxisInvariants.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/AxisInvariants.xtend
@@ -13,7 +13,7 @@
 		axis.getStartPixelOfSegmentPosition(segmentPosition + 1) - axis.getStartPixelOfSegmentPosition(segmentPosition)
 	}
 	
-	def static boolean containsPixelLocation(Axis axis, int pixelLocation) {
+	def static boolean containsPixelLocation(Axis axis, double pixelLocation) {
 		pixelLocation >= 0 && pixelLocation < axis.getStartPixelOfSegmentPosition(axis.segmentCount)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/AxisImpl.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/AxisImpl.xtend
index a55822a..d461293 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/AxisImpl.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/AxisImpl.xtend
@@ -11,12 +11,12 @@
 class AxisImpl extends AbstractAxis {
 	
 	int segmentCount
-	int defaultSegmentSize
-	val segmentSizeMap = new TreeMap<Integer, Integer>  // segment Position -> pixel size
+	double defaultSegmentSize
+	val segmentSizeMap = new TreeMap<Integer, Double>  // segment Position -> pixel size
 	
 	new() {}
 	
-	new(int segmentCount, int defaultSegmentSize) {
+	new(int segmentCount, double defaultSegmentSize) {
 		setSegmentCount(segmentCount)
 		setDefaultSegmentSize(defaultSegmentSize)
 	}
@@ -25,7 +25,7 @@
 		this.segmentCount = segmentCount
 	}
 	
-	def void setDefaultSegmentSize(int defaultSegmentSize) {
+	def void setDefaultSegmentSize(double defaultSegmentSize) {
 		this.defaultSegmentSize = defaultSegmentSize
 	}
 	
@@ -41,7 +41,7 @@
 		else if (segmentSizeMap.empty) return segmentPosition * defaultSegmentSize
 		else {
 			var numResizedSegments = 0
-			var resizeAggregate = 0
+			var resizeAggregate = 0.0
 			
 			for (resizedSegmentPosition : segmentSizeMap.subMap(0, segmentPosition).keySet) {
 				numResizedSegments = numResizedSegments + 1
@@ -52,18 +52,18 @@
 		}
 	}
 	
-	override getSegmentPositionOfPixelLocation(int pixelLocation) {
+	override getSegmentPositionOfPixelLocation(double pixelLocation) {
 		if (pixelLocation < 0) return -1
 		else if (pixelLocation == 0) return 0
 		else if (pixelLocation >= pixelSize) return segmentCount
-		else if (segmentSizeMap.empty) return pixelLocation / defaultSegmentSize
+		else if (segmentSizeMap.empty) return (pixelLocation / defaultSegmentSize) as int
 		else return findSegmentPositionOfPixelLocation(pixelLocation, 0, pixelSize, 0, segmentCount)
 	}
 	
-	def private int findSegmentPositionOfPixelLocation(int pixelLocation, int fromPixel, int toPixel, int fromSegmentPosition, int toSegmentPosition) {
+	def private int findSegmentPositionOfPixelLocation(double pixelLocation, double fromPixel, double toPixel, int fromSegmentPosition, int toSegmentPosition) {
 		// guess segment position = pixelLocation / size of guess region
 		val guessSegmentSize = (toPixel - fromPixel) / (toSegmentPosition - fromSegmentPosition)
-		val guessSegmentPosition = fromSegmentPosition + ((pixelLocation - fromPixel) / guessSegmentSize)
+		val guessSegmentPosition = fromSegmentPosition + ((pixelLocation - fromPixel) / guessSegmentSize) as int
 		
 		// find start/end pixel of guessed segment position
 		val startPixel = getStartPixelOfSegmentPosition(guessSegmentPosition)
@@ -90,7 +90,7 @@
 	
 	//
 
-	def void setPixelSizeOfSegmentPosition(int size, int segmentPosition) {
+	def void setPixelSizeOfSegmentPosition(double size, int segmentPosition) {
 		if (!containsSegmentPosition(segmentPosition)) throw new IllegalArgumentException('''segment position «segmentPosition» is not contained in this axis''')
 		if (size < 0) throw new IllegalArgumentException("size must be >= 0")
 		
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxis.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxis.xtend
index e0c0d89..785fb4b 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxis.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/hideshow/HideShowAxis.xtend
@@ -17,7 +17,7 @@
 class HideShowAxis extends AbstractAxis {
 	
 	val SortedMap<Integer, Serializable> hiddenSegmentPositionToIdMap = new TreeMap
-	val Map<Integer, Integer> segmentPositionToStartPixelMap = newHashMap
+	val Map<Integer, Double> segmentPositionToStartPixelMap = newHashMap
 	
 	Axis underlyingAxis
 	
@@ -42,7 +42,7 @@
 		if (startPixel != null)
 			return startPixel
 		else {
-			var aggregateSize = 0
+			var aggregateSize = 0.0
 			
 			for (position : 0 ..< segmentPosition) {
 				val segmentId = getIdOfSegmentPosition(position)
@@ -55,7 +55,7 @@
 		}
 	}
 	
-	override getSegmentPositionOfPixelLocation(int pixelLocation) {
+	override getSegmentPositionOfPixelLocation(double pixelLocation) {
 		if (pixelLocation < 0) return -1
 		
 		for (segmentPosition : 0 .. segmentCount) {
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxis.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxis.xtend
index 7e26c0f..a822adc 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxis.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/axis/impl/reorder/ReorderAxis.xtend
@@ -16,7 +16,7 @@
 class ReorderAxis extends AbstractAxis {
 	
 	val List<Serializable> reorderedSegmentIds = newArrayList
-	val Map<Integer, Integer> segmentPositionToStartPixelMap = newHashMap
+	val Map<Integer, Double> segmentPositionToStartPixelMap = newHashMap
 	
 	Axis underlyingAxis
 	
@@ -44,7 +44,7 @@
 		if (startPixel != null)
 			return startPixel
 		else {
-			var aggregateSize = 0
+			var aggregateSize = 0.0
 			
 			for (position : 0 ..< segmentPosition) {
 				val segmentId = reorderedSegmentIds.get(position)
@@ -57,7 +57,7 @@
 		}
 	}
 	
-	override getSegmentPositionOfPixelLocation(int pixelLocation) {
+	override getSegmentPositionOfPixelLocation(double pixelLocation) {
 		if (pixelLocation < 0) return -1
 		
 		for (segmentPosition : 0 .. segmentCount) {
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/TextCellPainter.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/TextCellPainter.xtend
index ad1921b..7e7f452 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/TextCellPainter.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/cell/impl/TextCellPainter.xtend
@@ -17,8 +17,8 @@
 
 		gc.drawText(
 			text,
-			centerX - (textWidth / 2) as int,
-			centerY - (gc.fontHeight / 2) as int
+			centerX - (textWidth / 2),
+			centerY - (gc.fontHeight / 2)
 		)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeAxis.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeAxis.xtend
index f0ba6a8..8f812bb 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeAxis.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeAxis.xtend
@@ -32,7 +32,7 @@
 	
 	override getStartPixelOfSegmentPosition(int segmentPosition) {
 		var segmentOffset = 0
-		var pixelOffset = 0
+		var pixelOffset = 0.0
 		
 		for (subLayer : subLayers) {
 			val subAxis = subLayer.axis
@@ -48,12 +48,12 @@
 		pixelOffset
 	}
 	
-	override getSegmentPositionOfPixelLocation(int pixelLocation) {
+	override getSegmentPositionOfPixelLocation(double pixelLocation) {
 		if (pixelLocation < 0) return -1
 		if (pixelLocation >= pixelSize) return segmentCount
 		
 		var segmentOffset = 0
-		var pixelOffset = 0
+		var pixelOffset = 0.0
 		
 		for (subLayer : subLayers) {
 			val subAxis = subLayer.axis
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend
index 8fdc450..51bf8e3 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/composite/CompositeLayerPainter.xtend
@@ -14,12 +14,12 @@
 	@Inject extension PainterFactory
 	
 	override paintLayer(CompositeLayer compositeLayer, PixelArea layerPaintArea, GraphicsContext gc) {
-		var yOffset = 0
+		var yOffset = 0.0
 		for (compositeRowPosition : 0 ..< compositeLayer.rows.size) {
 			val compositeRow = compositeLayer.rows.get(compositeRowPosition)
 			val isLastCompositeRow = compositeRowPosition == compositeLayer.rows.size - 1
 			
-			var xOffset = 0
+			var xOffset = 0.0
 			for (compositeColumnPosition : 0 ..< compositeRow.childLayers.size) {
 				val childLayer = compositeRow.childLayers.get(compositeColumnPosition)
 				val isLastCompositeColumn = compositeColumnPosition == compositeRow.childLayers.size - 1
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend
index 71109d3..944e3b0 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportAxis.xtend
@@ -15,9 +15,9 @@
 	 * Indicates the visible size of the axis. Note that the pixel locations returned by this ClientDimensionProvider
 	 * must be in terms of underlying axis pixel coordinates.
 	 */
-	int visiblePixelRange = -1
+	double visiblePixelRange = -1.0
 	
-	int pixelOrigin
+	double pixelOrigin
 	
 	new(Axis underlyingAxis, ViewportAxisListener viewportAxisListener) {
 		this.underlyingAxis = underlyingAxis
@@ -31,13 +31,13 @@
 		else underlyingAxis.pixelSize
 	}
 	
-	def setVisiblePixelRange(int visiblePixelRange) {
+	def setVisiblePixelRange(double visiblePixelRange) {
 		this.visiblePixelRange = visiblePixelRange
 	}
 	
 	def getPixelOrigin() { pixelOrigin }
 	
-	def void setPixelOrigin(int pixelOrigin) {
+	def void setPixelOrigin(double pixelOrigin) {
 		this.pixelOrigin = pixelOrigin
 		viewportAxisListener?.viewportAxisChanged
 	}
@@ -66,7 +66,7 @@
 		underlyingAxis.getStartPixelOfSegmentPosition(originSegmentPosition + segmentPosition) - pixelOrigin
 	}
 	
-	override getSegmentPositionOfPixelLocation(int pixelLocation) {
+	override getSegmentPositionOfPixelLocation(double pixelLocation) {
 		val underlyingPixelLocation = pixelOrigin + pixelLocation
 		if (underlyingPixelLocation < 0) return -1
 		if (underlyingPixelLocation >= underlyingAxis.pixelSize) return segmentCount
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/graphics/JavaFXGraphicsContext.xtend b/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/graphics/JavaFXGraphicsContext.xtend
index 7151d8a..d2b1872 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/graphics/JavaFXGraphicsContext.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/graphics/JavaFXGraphicsContext.xtend
@@ -23,7 +23,7 @@
 		gc.restore
 	}
 	
-	override translate(int xOffset, int yOffset) {
+	override translate(double xOffset, double yOffset) {
 		gc.translate(xOffset, yOffset)
 	}
 	
@@ -54,7 +54,7 @@
 		println("setClipBounds(clipBounds) not implemented")
 	}
 	
-	override drawLine(int x1, int y1, int x2, int y2) {
+	override drawLine(double x1, double y1, double x2, double y2) {
 		gc.strokeLine(x1, y1, x2, y2)
 	}
 	
@@ -66,7 +66,7 @@
 		gc.fillRect(rect.x, rect.y, rect.width, rect.height)
 	}
 	
-	override drawText(String text, int x, int y) {
+	override drawText(String text, double x, double y) {
 		gc.strokeText(text, x, y)
 	}
 	
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend
index ed9685f..5620c5e 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/graphics/SWTGraphicsContext.xtend
@@ -30,8 +30,8 @@
 	val stateStack = new Stack<Map<GraphicsPropertiesEnum, Object>>
 	
 	Map<GraphicsPropertiesEnum, Object> originalState = newHashMap
-	int xOffset
-	int yOffset
+	double xOffset
+	double yOffset
 	int foregroundAlpha = 255
 	int backgroundAlpha = 255
 	
@@ -69,14 +69,14 @@
 				case BACKGROUND_COLOR: gc.background = originalValue as org.eclipse.swt.graphics.Color
 				case BACKGROUND_ALPHA: backgroundAlpha = originalValue as Integer
 				case CLIP_BOUNDS: gc.clipping = originalValue as Rectangle
-				case X_OFFSET: xOffset = originalValue as Integer
-				case Y_OFFSET: yOffset = originalValue as Integer
+				case X_OFFSET: xOffset = originalValue as Double
+				case Y_OFFSET: yOffset = originalValue as Double
 			}
 		}
 		originalState = stateStack.pop
 	}
 	
-	override translate(int deltaX, int deltaY) {
+	override translate(double deltaX, double deltaY) {
 		originalState.put(X_OFFSET, xOffset)
 		originalState.put(Y_OFFSET, yOffset)
 		
@@ -116,27 +116,27 @@
 	
 	override setClipBounds(PixelRectangle clipBounds) {
 		originalState.put(CLIP_BOUNDS, gc.clipping)
-		gc.clipping = new Rectangle(xOffset + clipBounds.x, yOffset + clipBounds.y, clipBounds.width, clipBounds.height)
+		gc.clipping = new Rectangle((xOffset + clipBounds.x) as int, (yOffset + clipBounds.y) as int, clipBounds.width as int, clipBounds.height as int)
 	}
 	
-	override drawLine(int x1, int y1, int x2, int y2) {
+	override drawLine(double x1, double y1, double x2, double y2) {
 		gc.alpha = foregroundAlpha
-		gc.drawLine(xOffset + x1, yOffset + y1, xOffset + x2, yOffset + y2)
+		gc.drawLine((xOffset + x1) as int, (yOffset + y1) as int, (xOffset + x2) as int, (yOffset + y2) as int)
 	}
 	
 	override drawRectangle(PixelRectangle rect) {
 		gc.alpha = foregroundAlpha
-		gc.drawRectangle(xOffset + rect.x, yOffset + rect.y, rect.width, rect.height)
+		gc.drawRectangle((xOffset + rect.x) as int, (yOffset + rect.y) as int, rect.width as int, rect.height as int)
 	}
 	
 	override fillRectangle(PixelRectangle rect) {
 		gc.alpha = backgroundAlpha
-		gc.fillRectangle(xOffset + rect.x, yOffset + rect.y, rect.width, rect.height)
+		gc.fillRectangle((xOffset + rect.x) as int, (yOffset + rect.y) as int, rect.width as int, rect.height as int)
 	}
 	
-	override drawText(String text, int x, int y) {
+	override drawText(String text, double x, double y) {
 		gc.alpha = foregroundAlpha
-		gc.drawText(text, xOffset + x, yOffset + y, SWT::DRAW_TRANSPARENT.bitwiseOr(SWT::DRAW_DELIMITER))
+		gc.drawText(text, (xOffset + x) as int, (yOffset + y) as int, SWT::DRAW_TRANSPARENT.bitwiseOr(SWT::DRAW_DELIMITER))
 		
 		//TODO draw underline and strikethrough in here instead of the TextPainter itself
 	}
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend
index aae940c..eff6009 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/SWTViewportLayerPainter.xtend
@@ -59,7 +59,7 @@
 		// Resize viewport canvas
 		
 		val clipBounds = gc.clipBounds
-		viewportCanvas.bounds = new Rectangle(swtGC.getXOffset + clipBounds.x, swtGC.getYOffset + clipBounds.y, clipBounds.width, clipBounds.height)
+		viewportCanvas.bounds = new Rectangle((swtGC.getXOffset + clipBounds.x) as int, (swtGC.getYOffset + clipBounds.y) as int, clipBounds.width as int, clipBounds.height as int)
 	}
 	
 }
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/ScrollBarHandler.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/ScrollBarHandler.xtend
index a7dfc25..59b551f 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/ScrollBarHandler.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/layer/viewport/ScrollBarHandler.xtend
@@ -24,11 +24,11 @@
 	}
 
 	def void adjustScrollBar() {
-		scrollBar.selection = viewportAxis.pixelOrigin /*- viewportAxis.minimumOrigin*/
+		scrollBar.selection = viewportAxis.pixelOrigin /*- viewportAxis.minimumOrigin*/ as int
 	}
 
 	def void recalculateScrollBarSize() {
-		val max = viewportAxis.underlyingAxis.pixelSize /*- viewportAxis.minimumOrigin*/
+		val max = viewportAxis.underlyingAxis.pixelSize /*- viewportAxis.minimumOrigin*/ as int
 		
 		scrollBar.maximum = max
 		
@@ -36,13 +36,13 @@
 		
 		var thumbSize = 0
 		if (visiblePixelSize < max && visiblePixelSize != 0) {
-			thumbSize = visiblePixelSize
+			thumbSize = visiblePixelSize as int
 			scrollBar.enabled = true
 			scrollBar.visible = true
 			
 			scrollBar.increment = scrollIncrement
 			
-			scrollBar.pageIncrement = visiblePixelSize
+			scrollBar.pageIncrement = visiblePixelSize as int
 		} else {
 			thumbSize = max
 			scrollBar.enabled = false
@@ -54,7 +54,7 @@
 	}
 	
 	def int getScrollIncrement() {
-		Math::min(viewportAxis.getPixelSizeOfSegmentPosition(0), viewportAxis.visiblePixelRange / 4)
+		Math::min(viewportAxis.getPixelSizeOfSegmentPosition(0), viewportAxis.visiblePixelRange / 4) as int
 	}
 	
 }
\ No newline at end of file