diff --git a/src/decoder/modplug_plugin.c b/src/decoder/modplug_plugin.c
index e02282c04..f21f4e7a7 100644
--- a/src/decoder/modplug_plugin.c
+++ b/src/decoder/modplug_plugin.c
@@ -91,12 +91,7 @@ mod_decode(struct decoder *decoder, struct input_stream *is)
 		g_warning("could not load stream\n");
 		return;
 	}
-	f = ModPlug_Load(bdatas->data, bdatas->len);
-	g_byte_array_free(bdatas, TRUE);
-	if (!f) {
-		g_warning("could not decode stream\n");
-		return;
-        }
+
 	ModPlug_GetSettings(&settings);
 	/* alter setting */
 	settings.mResamplingMode = MODPLUG_RESAMPLE_FIR; /* RESAMP */
@@ -106,6 +101,13 @@ mod_decode(struct decoder *decoder, struct input_stream *is)
 	/* insert more setting changes here */
 	ModPlug_SetSettings(&settings);
 
+	f = ModPlug_Load(bdatas->data, bdatas->len);
+	g_byte_array_free(bdatas, TRUE);
+	if (!f) {
+		g_warning("could not decode stream\n");
+		return;
+	}
+
 	audio_format.bits = 16;
 	audio_format.sample_rate = 44100;
 	audio_format.channels = 2;