diff --git a/org.eclipse.nebula.widgets.nattable.renderer.javafx/META-INF/MANIFEST.MF b/org.eclipse.nebula.widgets.nattable.renderer.javafx/META-INF/MANIFEST.MF
index 2bdb246..22c330f 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.javafx/META-INF/MANIFEST.MF
+++ b/org.eclipse.nebula.widgets.nattable.renderer.javafx/META-INF/MANIFEST.MF
@@ -7,5 +7,7 @@
 Require-Bundle: org.eclipse.xtend.lib,
  com.google.guava,
  org.eclipse.xtext.xbase.lib,
- org.eclipse.nebula.widgets.nattable.core;bundle-version="2.0.0"
+ org.eclipse.nebula.widgets.nattable.core;bundle-version="2.0.0",
+ javax.inject;bundle-version="1.0.0",
+ com.google.inject;bundle-version="3.0.0"
 
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend b/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend
index 9bd1cbd..a43bd0f 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.javafx/src/org/eclipse/nebula/widgets/nattable/renderer/javafx/JavaFXNatTable.xtend
@@ -1,10 +1,14 @@
 package org.eclipse.nebula.widgets.nattable.renderer.javafx
 
+import com.google.inject.Guice
+import com.google.inject.Injector
 import javafx.beans.value.ObservableValue
 import javafx.scene.canvas.Canvas
+import javax.inject.Inject
 import org.eclipse.nebula.widgets.nattable.core.geometry.PixelArea
+import org.eclipse.nebula.widgets.nattable.core.graphics.DefaultPainterFactory
+import org.eclipse.nebula.widgets.nattable.core.graphics.PainterFactory
 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
 
 /**
@@ -12,13 +16,19 @@
  */
 class JavaFXNatTable extends Canvas {
 	
-	val static defaultLayerPainter = new GridLineCellLayerPainter
+	extension Injector
+	@Inject extension PainterFactory
 	
 	val Layer layer
 	
 	new(Layer layer) {
 		this.layer = layer
 		
+		_injector = Guice::createInjector.createChildInjector([ binder |
+			binder.bind(typeof(PainterFactory)).toInstance(new DefaultPainterFactory)
+		])
+		this.injectMembers
+		
 		paintLayer
 		
         boundsInLocalProperty.addListener([ ObservableValue<?> observable, Object oldValue, Object newValue |
@@ -28,11 +38,8 @@
 	
 	def private paintLayer() {
 		val paintArea = new PixelArea(boundsInLocal.width, boundsInLocal.height)
-		layer.layerPainter.paintLayer(layer, paintArea, new JavaFXGraphicsContext(this.graphicsContext2D))
-	}
-	
-	def private getLayerPainter(Layer layer) {
-		defaultLayerPainter
+		val gc = new JavaFXGraphicsContext(this.graphicsContext2D)
+		layer?.layerPainter?.paintLayer(layer, paintArea, gc)
 	}
 	
 }
\ No newline at end of file
diff --git a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
index 6f24abf..9b246d9 100644
--- a/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
+++ b/org.eclipse.nebula.widgets.nattable.renderer.swt/src/org/eclipse/nebula/widgets/nattable/renderer/swt/SWTNatTable.xtend
@@ -38,8 +38,6 @@
 		this.injectMembers
 	}
 	
-	def getInjector() { _injector }
-	
 	def Layer getLayer() { layer }
 	
 	def void setLayer(Layer layer) {
@@ -57,8 +55,10 @@
 		modeSwitcher.switchToMode(Mode::NORMAL)
 	}
 	
-	def private paintLayer(GC gc) {
-		layer?.layerPainter?.paintLayer(layer, new PixelArea(bounds.width, bounds.height), new SWTGraphicsContext(this, gc))
+	def private paintLayer(GC swtGC) {
+		val paintArea = new PixelArea(bounds.width, bounds.height)
+		val gc = new SWTGraphicsContext(this, swtGC)
+		layer?.layerPainter?.paintLayer(layer, paintArea, gc)
 	}
 	
 }
