diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java
index 6373d324d0f4d5d536c6c9a3167dca1776ed3e3d..1d15d9ad02184a18dc076b6cce7d739f8eba9552 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/content/Playlistable.java
@@ -8,6 +8,8 @@ public interface Playlistable {
 
 	IntegerProperty currentPlayingMediaIndexProperty();
 
+	boolean hasNext();
+
 	void next();
 
 	boolean isLoaded(MediaPath mediaPath);
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeContentListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeContentListener.java
index ad414c8d8250053b5a3ec2f279c3b3bfd676e57c..0d7436b3405d2f89be63feebeaf36f55fe213889 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeContentListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeContentListener.java
@@ -7,9 +7,12 @@ import de.tobias.playpad.pad.fade.Fadeable;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 
+/**
+ * Remove end of file fade listener on old pad content and register on new pad content
+ */
 public class PadFadeContentListener implements ChangeListener<PadContent> {
 
-	private Pad pad;
+	private final Pad pad;
 
 	public PadFadeContentListener(Pad pad) {
 		this.pad = pad;
diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeDurationListener.java b/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeDurationListener.java
index b795033f65d4b4004432d8c53d82a8ee0f115939..214f832d81b61a8449170e5443a83a1fa32c57de 100644
--- a/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeDurationListener.java
+++ b/PlayWallCore/src/main/java/de/tobias/playpad/pad/fade/listener/PadFadeDurationListener.java
@@ -1,6 +1,7 @@
 package de.tobias.playpad.pad.fade.listener;
 
 import de.tobias.playpad.pad.Pad;
+import de.tobias.playpad.pad.content.Playlistable;
 import de.tobias.playpad.pad.content.play.Durationable;
 import de.tobias.playpad.pad.fade.Fadeable;
 import javafx.beans.value.ChangeListener;
@@ -20,6 +21,16 @@ public class PadFadeDurationListener implements ChangeListener<Duration> {
 		if (pad.getPadSettings().getFade().isFadeOutEof()) {
 			final Duration fadeDuration = pad.getPadSettings().getFade().getFadeOut();
 
+			// Do not fade out if looping is enabled
+			if (pad.getPadSettings().isLoop()) {
+				return;
+			}
+
+			// Do not fade out if the playlist has a next entry
+			if (pad.getContent() instanceof Playlistable && ((Playlistable) pad.getContent()).hasNext()) {
+				return;
+			}
+			
 			if (pad.getContent() instanceof Durationable) {
 				final Durationable durationable = (Durationable) pad.getContent();
 
diff --git a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala
index 7706ee91c62a9bc51abaceb00f35484ac8eca78e..c1db519a17b8119362c64e7385ba26d91f2b9a40 100644
--- a/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala
+++ b/PlayWallPlugins/PlayWallPluginContentPlayer/src/main/scala/de/tobias/playpad/plugin/content/pad/ContentPlayerPadContent.scala
@@ -50,6 +50,8 @@ class ContentPlayerPadContent(val pad: Pad, val `type`: String) extends PadConte
 
 	def getMediaPlayers: ObservableList[ContentPlayerMediaContainer] = mediaPlayers
 
+	override def hasNext: Boolean = getCurrentPlayingMediaIndex + 1 < mediaPlayers.length
+
 	/*
 	Control Methods
 	 */