diff --git a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java
index 1bbc3ca7a66d4931b8259bba2ee85a2cfb1f2745..e489060642715ed344c0ef205301f1a74c85a252 100644
--- a/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java
+++ b/src/main/java/de/tudresden/inf/mci/brailleplot/rendering/Image.java
@@ -3,13 +3,15 @@ package de.tudresden.inf.mci.brailleplot.rendering;
 import javax.imageio.ImageIO;
 import java.awt.image.BufferedImage;
 import java.io.File;
+import java.io.IOException;
+import java.net.URL;
 import java.util.Objects;
 
 /**
  * A representation of an (raster graphic) image. Basically just a wrapper for {@link javax.imageio.ImageIO} and
  * {@link java.awt.image.BufferedImage}.
- * @author Leonard Kupper
- * @version 2019.07.22
+ * @author Leonard Kupper, Georg Graßnick
+ * @version 2019.09.24
  */
 public class Image implements Renderable {
 
@@ -24,6 +26,15 @@ public class Image implements Renderable {
         imageData = ImageIO.read(Objects.requireNonNull(imageFile));
     }
 
+    /**
+     * Constructor. Creates a new renderable representation from an image identified by an URL.
+     * @param url The URL to a resource containing an raster graphic image. (Different types supported. BMP, PNG, JPEG, ...)
+     * @throws java.io.IOException If an I/O exception of some sort has occurred while reading the image file.
+     */
+    public Image(final URL url) throws IOException {
+        imageData = ImageIO.read(url);
+    }
+
     /**
      * Get the loaded image as {@link BufferedImage}.
      * @return An instance of {@link BufferedImage}.
diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java
index fe01525acc5b33c9cadd6f917f3c7c82cb5fa8b9..ce71eb080ebfbf12987943715e93386c8c4a6c30 100644
--- a/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java
+++ b/src/test/java/de/tudresden/inf/mci/brailleplot/configparser/JavaPropertiesConfigurationParserTest.java
@@ -4,7 +4,7 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
-import java.io.File;
+import java.net.URL;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.NoSuchElementException;
@@ -13,15 +13,13 @@ import java.util.Set;
 
 public class JavaPropertiesConfigurationParserTest {
 
-    public static final String mDefaultConfigPath = getResource("config/default.properties").getAbsolutePath();
-    public static final String mConcreteConfigPath = getResource("config/concrete.properties").getAbsolutePath();
+    public static final URL mDefaultConfigPath = getResource("config/default.properties");
+    public static final URL mConcreteConfigPath = getResource("config/concrete.properties");
     public static Printer mPrinterConfig;
     public static Format mFormatConfig;
 
-    public static File getResource(String fileName) {
-        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
-        File resourceFile = new File(classLoader.getResource(fileName).getFile());
-        return resourceFile;
+    public static URL getResource(final String location) {
+        return ClassLoader.getSystemClassLoader().getResource(location);
     }
 
     // Correct use testcases
@@ -79,13 +77,13 @@ public class JavaPropertiesConfigurationParserTest {
     @Test
     public void testIllegalFile() {
         Assertions.assertThrows(
-                ConfigurationParsingException.class,
-                () -> new JavaPropertiesConfigurationParser("config/nonexistent.properties", mDefaultConfigPath)
+                NullPointerException.class,
+                () -> new JavaPropertiesConfigurationParser(getResource("config/nonexistent.properties"), mDefaultConfigPath)
         );
     }
     @Test
     public void testMissingRequired() {
-        String configPath = getResource("config/missingRequiredPropertyExample.properties").getAbsolutePath();
+        URL configPath = getResource("config/missingRequiredPropertyExample.properties");
         Assertions.assertThrows(
                 IllegalStateException.class,
                 () -> new JavaPropertiesConfigurationParser(configPath, mDefaultConfigPath)
@@ -93,7 +91,7 @@ public class JavaPropertiesConfigurationParserTest {
     }
     @Test
     public void testIllegalProperty() {
-        String configPath = getResource("config/illegalPropertyNameExample.properties").getAbsolutePath();
+        URL configPath = getResource("config/illegalPropertyNameExample.properties");
         Assertions.assertThrows(
                 ConfigurationValidationException.class,
                 () -> new JavaPropertiesConfigurationParser(configPath, mDefaultConfigPath)
@@ -101,7 +99,7 @@ public class JavaPropertiesConfigurationParserTest {
     }
     @Test
     public void testIllegalValue() {
-        String configPath = getResource("config/illegalPropertyValueExample.properties").getAbsolutePath();
+        URL configPath = getResource("config/illegalPropertyValueExample.properties");
         Assertions.assertThrows(
                 ConfigurationValidationException.class,
                 () -> new JavaPropertiesConfigurationParser(configPath, mDefaultConfigPath)
diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java
index f0cbc05ce550ce78ee1261c77801fb15da0c952c..5401330467bd48923bdea75abf543f27688340c3 100644
--- a/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java
+++ b/src/test/java/de/tudresden/inf/mci/brailleplot/layout/RasterCanvasTest.java
@@ -2,9 +2,6 @@ package de.tudresden.inf.mci.brailleplot.layout;
 
 import de.tudresden.inf.mci.brailleplot.configparser.ConfigurationParser;
 import de.tudresden.inf.mci.brailleplot.configparser.JavaPropertiesConfigurationParser;
-import de.tudresden.inf.mci.brailleplot.layout.RasterCanvas;
-import de.tudresden.inf.mci.brailleplot.layout.Rectangle;
-import de.tudresden.inf.mci.brailleplot.layout.SixDotBrailleRasterCanvas;
 import de.tudresden.inf.mci.brailleplot.printabledata.MatrixData;
 import de.tudresden.inf.mci.brailleplot.rendering.Image;
 import de.tudresden.inf.mci.brailleplot.rendering.MasterRenderer;
@@ -12,21 +9,20 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 import java.io.File;
+import java.net.URL;
 import java.util.ListIterator;
 
 
 public class RasterCanvasTest {
 
-    public static final String mDefaultConfig = getResource("config/rasterizer_test_default.properties").getAbsolutePath();
-    public static final String mBaseConfig = getResource("config/base_format.properties").getAbsolutePath();
-    public static final String mMarginsOnlyConfig = getResource("config/margins_only.properties").getAbsolutePath();
-    public static final String mConstraintOnlyConfig = getResource("config/constraint_only.properties").getAbsolutePath();
-    public static final String mBothConfig = getResource("config/margins_and_constraint.properties").getAbsolutePath();
+    public static final URL mDefaultConfig = getResource("config/rasterizer_test_default.properties");
+    public static final URL mBaseConfig = getResource("config/base_format.properties");
+    public static final URL mMarginsOnlyConfig = getResource("config/margins_only.properties");
+    public static final URL mConstraintOnlyConfig = getResource("config/constraint_only.properties");
+    public static final URL mBothConfig = getResource("config/margins_and_constraint.properties");
 
-    public static File getResource(String fileName) {
-        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
-        File resourceFile = new File(classLoader.getResource(fileName).getFile());
-        return resourceFile;
+    public static URL getResource(final String location) {
+        return ClassLoader.getSystemClassLoader().getResource(location);
     }
 
     @Test
diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java
index 630419f330bc118d71d6add1be0aca3d023d82e3..0a410a48602d8a1272023ed4f01898a9c490a4ff 100644
--- a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java
+++ b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/FunctionalRasterizerTest.java
@@ -11,19 +11,18 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
 import java.io.File;
+import java.net.URL;
 
 
 public class FunctionalRasterizerTest {
 
-    public static final String mDefaultConfig = getResource("config/rasterizer_test_default.properties").getAbsolutePath();
-    public static final String mBaseConfig = getResource("config/base_format.properties").getAbsolutePath();
+    public static final URL mDefaultConfig = getResource("config/rasterizer_test_default.properties");
+    public static final URL mBaseConfig = getResource("config/base_format.properties");
     public static Printer mPrinter;
     public static Format mFormat;
 
-    public static File getResource(String fileName) {
-        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
-        File resourceFile = new File(classLoader.getResource(fileName).getFile());
-        return resourceFile;
+    public static URL getResource(final String location) {
+        return ClassLoader.getSystemClassLoader().getResource(location);
     }
 
     @BeforeAll
diff --git a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java
index 27a0db664751722ae32a3d1bdee76a04a745e46c..cbd630e1ac20fde76502301d57f9207a8a440a6f 100644
--- a/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java
+++ b/src/test/java/de/tudresden/inf/mci/brailleplot/rendering/MasterRendererTest.java
@@ -10,20 +10,18 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
-import java.io.File;
+import java.net.URL;
 
 
 public class MasterRendererTest {
 
-    public static final String mDefaultConfig = getResource("config/rasterizer_test_default.properties").getAbsolutePath();
-    public static final String mBaseConfig = getResource("config/base_format.properties").getAbsolutePath();
+    public static final URL mDefaultConfig = getResource("config/rasterizer_test_default.properties");
+    public static final URL mBaseConfig = getResource("config/base_format.properties");
     public static Printer mPrinter;
     public static Format mFormat;
 
-    public static File getResource(String fileName) {
-        ClassLoader classLoader = ClassLoader.getSystemClassLoader();
-        File resourceFile = new File(classLoader.getResource(fileName).getFile());
-        return resourceFile;
+    public static URL getResource(final String location) {
+        return ClassLoader.getSystemClassLoader().getResource(location);
     }
 
     @BeforeAll