diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java b/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java
index 8a2b878b372847248063d29ba1ffd62c1706c1cf..aa4886e1f232718290f6e4aee6a194763b7feb5b 100644
--- a/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java
+++ b/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java
@@ -48,7 +48,7 @@ public class ScoreBasedScoreCalculator extends VariantScoreCalculator {
 		if (courseMaximumValue == 0 || numUsers == 0) {
 			return 0;
 		}
-		final double courseAverageValue = userTotalValue / numUsers;
+		final double courseAverageValue = (double) userTotalValue / numUsers;
 		final double courseProgress = courseAverageValue / courseMaximumValue;
 		return (int) Math.min(100, Math.round(courseProgress * 100));
 	}
diff --git a/src/main/java/de/thm/arsnova/util/ImageUtils.java b/src/main/java/de/thm/arsnova/util/ImageUtils.java
index 7bba609524f2528593e0ef9e337bb1e99724f77a..9b79795b547bd0e1c916c3c1cf102141dcc91b17 100644
--- a/src/main/java/de/thm/arsnova/util/ImageUtils.java
+++ b/src/main/java/de/thm/arsnova/util/ImageUtils.java
@@ -81,7 +81,7 @@ public class ImageUtils {
 		if (urlParts.length > 0) {
 			final String extension = urlParts[urlParts.length - 1];
 
-			return "data:image/" + extension + ";base64," + Base64.encodeBase64String(convertFileToByteArray(imageUrl));
+			return IMAGE_PREFIX_START + extension + IMAGE_PREFIX_MIDDLE + Base64.encodeBase64String(convertFileToByteArray(imageUrl));
 		}
 
 		return null;
@@ -165,8 +165,9 @@ public class ImageUtils {
 			final String base64String = imgInfo[1];
 
 			byte[] imageData = Base64.decodeBase64(base64String);
-			try {
-				BufferedImage originalImage = ImageIO.read(new ByteArrayInputStream(imageData));
+			try (final ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
+					final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+				BufferedImage originalImage = ImageIO.read(bais);
 				BufferedImage newImage = new BufferedImage(width, height, originalImage.getType());
 				Graphics2D g = newImage.createGraphics();
 
@@ -186,17 +187,15 @@ public class ImageUtils {
 				g.dispose();
 
 				StringBuilder result = new StringBuilder();
-				result.append("data:image/");
+				result.append(IMAGE_PREFIX_START);
 				result.append(extension);
-				result.append(";base64,");
+				result.append(IMAGE_PREFIX_MIDDLE);
 
-				ByteArrayOutputStream output = new ByteArrayOutputStream();
-				ImageIO.write(newImage, extension, output);
+				ImageIO.write(newImage, extension, baos);
 
-				output.flush();
-				output.close();
+				baos.flush();
 
-				result.append(Base64.encodeBase64String(output.toByteArray()));
+				result.append(Base64.encodeBase64String(baos.toByteArray()));
 
 				return result.toString();
 			} catch (IOException e) {
@@ -230,11 +229,8 @@ public class ImageUtils {
 	 * @return The <code>byte[]</code> of the image on success, otherwise <code>null</code>.
 	 */
 	byte[] convertFileToByteArray(final String imageUrl) {
-		try {
-			final URL url = new URL(imageUrl);
-			final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
-			final InputStream is = url.openStream();
+		try (final InputStream is = new URL(imageUrl).openStream();
+				final ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
 			final byte[] byteChunk = new byte[CHUNK_SIZE];
 			int n;
 
@@ -243,10 +239,8 @@ public class ImageUtils {
 			}
 
 			baos.flush();
-			baos.close();
 
 			return baos.toByteArray();
-
 		} catch (IOException e) {
 			logger.error(e.getLocalizedMessage());
 		}
diff --git a/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java b/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java
index 81dc3c32e1defe10987ab8a15de27b6f18600a18..36083965b9d4119d1b304ccbd45199c901758958 100644
--- a/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java
+++ b/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java
@@ -60,27 +60,30 @@ public class ScoreBasedScoreCalculatorTest {
 
 	@Test
 	public void shouldFilterBasedOnQuestionVariant() {
+		// Total of 300 Points
 		String q1 = this.addQuestion("lecture", 100);
-		String q2 = this.addQuestion("preparation", 100);
+		String q2 = this.addQuestion("lecture", 100);
+		String q3 = this.addQuestion("lecture", 100);
 		User u1 = new TestUser("user1");
 		User u2 = new TestUser("user2");
-		// first question is answered correctly, second one is not
+		User u3 = new TestUser("user3");
+		// Both users achieve 200 points
 		this.addAnswer(q1, u1, 100);
 		this.addAnswer(q1, u2, 100);
+		this.addAnswer(q1, u3, 0);
 		this.addAnswer(q2, u1, 0);
-		this.addAnswer(q2, u2, 0);
+		this.addAnswer(q2, u2, 100);
+		this.addAnswer(q2, u3, 0);
+		this.addAnswer(q3, u1, 100);
+		this.addAnswer(q3, u2, 100);
+		this.addAnswer(q3, u3, 0);
 
 		lp.setQuestionVariant("lecture");
-		ScoreStatistics lectureProgress = lp.getCourseProgress(null);
-		ScoreStatistics myLectureProgress = lp.getMyProgress(null, u1);
-		lp.setQuestionVariant("preparation");
-		ScoreStatistics prepProgress = lp.getCourseProgress(null);
-		ScoreStatistics myPrepProgress = lp.getMyProgress(null, u1);
-
-		assertEquals(100, lectureProgress.getCourseProgress());
-		assertEquals(100, myLectureProgress.getMyProgress());
-		assertEquals(0, prepProgress.getCourseProgress());
-		assertEquals(0, myPrepProgress.getMyProgress());
+		ScoreStatistics u1LectureProgress = lp.getMyProgress(null, u1);
+		// (500/3) / 300 ~= 0,56.
+		assertEquals(56, u1LectureProgress.getCourseProgress());
+		// 200 / 300 ~= 0,67.
+		assertEquals(67, u1LectureProgress.getMyProgress());
 	}
 
 	@Test