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 ca391f4..f7aea1f 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
@@ -56,6 +56,8 @@
 		this.visiblePixelSize = visiblePixelSize
 	}
 	
+	// Viewport origin
+	
 	def getViewportOrigin() { viewportOrigin }
 	
 	def void setViewportOrigin(double viewportOrigin) {
@@ -67,10 +69,12 @@
 		viewportAxisListener?.viewportAxisChanged
 	}
 	
-	def getOriginSegmentPosition() {
+	def getViewportOriginSegmentPosition() {
 		underlyingAxis.getSegmentPositionOfPixelLocation(viewportOrigin)
 	}
 	
+	// Resize
+	
 	def void handleResize() {
 		// If the visible pixel size is greater than the content size, move origin to fill as much content as possible.
 		val additionalSize = viewportOrigin + getVisiblePixelSize - underlyingAxis.pixelSize
@@ -84,7 +88,7 @@
 		val endPixel = viewportOrigin + getVisiblePixelSize
 		val endSegmentPosition = underlyingAxis.getSegmentPositionOfPixelLocation(endPixel)
 		val isEndPixelInsideEndSegment = endPixel > underlyingAxis.getStartPixelOfSegmentPosition(endSegmentPosition) && endPixel < underlyingAxis.getStartPixelOfSegmentPosition(underlyingAxis.segmentCount)
-		val segmentCount = endSegmentPosition - originSegmentPosition
+		val segmentCount = endSegmentPosition - viewportOriginSegmentPosition
 		segmentCount.intValue + if (isEndPixelInsideEndSegment) 1 else 0
 	}
 	
@@ -94,33 +98,33 @@
 		else if (maxPixelSize != null && segmentPosition == segmentCount)
 			getStartPixelOfSegmentPosition(0) + maxPixelSize
 		else
-			(underlyingAxis.getStartPixelOfSegmentPosition(originSegmentPosition + BigInteger::valueOf(segmentPosition)) - viewportOrigin).doubleValue
+			(underlyingAxis.getStartPixelOfSegmentPosition(viewportOriginSegmentPosition + BigInteger::valueOf(segmentPosition)) - viewportOrigin).doubleValue
 	}
 	
 	override getOriginPixelOfSegmentPosition(int segmentPosition) {
-		(underlyingAxis.getOriginPixelOfSegmentPosition(originSegmentPosition + BigInteger::valueOf(segmentPosition)) - viewportOrigin).doubleValue
+		(underlyingAxis.getOriginPixelOfSegmentPosition(viewportOriginSegmentPosition + BigInteger::valueOf(segmentPosition)) - viewportOrigin).doubleValue
 	}
 	
 	override getPixelSizeOfSegmentPosition(int segmentPosition) {
 		if (maxPixelSize != null && segmentPosition == segmentCount - 1)
 			maxPixelSize.doubleValue
 		else
-			underlyingAxis.getPixelSizeOfSegmentPosition(originSegmentPosition + BigInteger::valueOf(segmentPosition)).doubleValue
+			underlyingAxis.getPixelSizeOfSegmentPosition(viewportOriginSegmentPosition + BigInteger::valueOf(segmentPosition)).doubleValue
 	}
 	
 	override getSegmentPositionOfPixelLocation(double pixelLocation) {
 		val underlyingPixelLocation = viewportOrigin + BigDecimal::valueOf(pixelLocation)
 		if (underlyingPixelLocation < BigDecimal::ZERO) return -1
 		if (underlyingPixelLocation >= underlyingAxis.pixelSize) return getSegmentCount()
-		(underlyingAxis.getSegmentPositionOfPixelLocation(underlyingPixelLocation) - originSegmentPosition).intValueExact
+		(underlyingAxis.getSegmentPositionOfPixelLocation(underlyingPixelLocation) - viewportOriginSegmentPosition).intValueExact
 	}
 	
 	override getIdOfSegmentPosition(int segmentPosition) {
-		underlyingAxis.getIdOfSegmentPosition(originSegmentPosition + BigInteger::valueOf(segmentPosition))
+		underlyingAxis.getIdOfSegmentPosition(viewportOriginSegmentPosition + BigInteger::valueOf(segmentPosition))
 	}
 	
 	override getSegmentPositionOfId(Serializable segmentId) {
-		(underlyingAxis.getSegmentPositionOfId(segmentId) - originSegmentPosition).intValueExact
+		(underlyingAxis.getSegmentPositionOfId(segmentId) - viewportOriginSegmentPosition).intValueExact
 	}
 	
 }
\ No newline at end of file
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportCell.xtend b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportCell.xtend
index 8f6e27d..262ac15 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportCell.xtend
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/core/layer/impl/viewport/ViewportCell.xtend
@@ -23,8 +23,8 @@
 	override getPositionBounds() {
 		val underlyingPositionBounds = underlyingCell.positionBounds
 		new PositionRectangle(
-			(underlyingPositionBounds.columnPosition - viewportLayer.horizontalAxis.originSegmentPosition).intValueExact,
-			(underlyingPositionBounds.rowPosition - viewportLayer.verticalAxis.originSegmentPosition).intValueExact,
+			(underlyingPositionBounds.columnPosition - viewportLayer.horizontalAxis.viewportOriginSegmentPosition).intValueExact,
+			(underlyingPositionBounds.rowPosition - viewportLayer.verticalAxis.viewportOriginSegmentPosition).intValueExact,
 			underlyingPositionBounds.width.intValueExact,
 			underlyingPositionBounds.height.intValueExact
 		)
@@ -40,8 +40,8 @@
 	
 	def getUnderlyingCell() {
 		viewportLayer.underlyingLayer.getCell(
-			viewportLayer.horizontalAxis.originSegmentPosition + BigInteger::valueOf(columnPosition),
-			viewportLayer.verticalAxis.originSegmentPosition + BigInteger::valueOf(rowPosition)
+			viewportLayer.horizontalAxis.viewportOriginSegmentPosition + BigInteger::valueOf(columnPosition),
+			viewportLayer.verticalAxis.viewportOriginSegmentPosition + BigInteger::valueOf(rowPosition)
 		)
 	}
 	
