diff --git a/src/s_sound.c b/src/s_sound.c
index cdb27f5044d23172f8633768d18fa107479a2bc1..7b1247445d781282f493d7d24e9e0d5942af30a7 100644
--- a/src/s_sound.c
+++ b/src/s_sound.c
@@ -1564,10 +1564,11 @@ static void S_ChangeMusicToQueue(void)
 
 void S_ChangeMusicEx(const char *mmusic, UINT16 mflags, boolean looping, UINT32 position, UINT32 prefadems, UINT32 fadeinms)
 {
+	char newmusic[7];
+
 	if (S_MusicDisabled())
 		return;
 
-	char newmusic[7];
 	strncpy(newmusic, mmusic, 7);
 #if defined(HAVE_BLUA) && defined(HAVE_LUA_MUSICPLUS)
 	if(LUAh_MusicChange(music_name, newmusic, &mflags, &looping, &position, &prefadems, &fadeinms))
@@ -1723,7 +1724,7 @@ boolean S_FadeMusicFromVolume(UINT8 target_volume, INT16 source_volume, UINT32 m
 	if (source_volume < 0)
 		return I_FadeSong(target_volume, ms, NULL);
 	else
-		return I_FadeSongFromVolume(target_volume, source_volume, ms, false);
+		return I_FadeSongFromVolume(target_volume, source_volume, ms, NULL);
 }
 
 boolean S_FadeOutStopMusic(UINT32 ms)
diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c
index 472ab3d290d7faea5f972891738b5d883669e877..1092421194ae8aa53c3202832ac98acdf7716215 100644
--- a/src/sdl/mixer_sound.c
+++ b/src/sdl/mixer_sound.c
@@ -591,7 +591,7 @@ static UINT32 get_adjusted_position(UINT32 position)
 		return position;
 }
 
-static void do_fading_callback()
+static void do_fading_callback(void)
 {
 	if (fading_callback)
 		(*fading_callback)();
@@ -650,11 +650,11 @@ static UINT32 music_fade(UINT32 interval, void *param)
 	else
 	{
 		UINT8 delta = abs(fading_target - fading_source);
-		double factor = (double)(fading_duration - fading_timer) / (double)fading_duration;
+		fixed_t factor = FixedDiv(fading_duration - fading_timer, fading_duration);
 		if (fading_target < fading_source)
-			internal_volume = max(min(internal_volume, fading_source - (UINT8)round(delta * factor)), fading_target);
+			internal_volume = max(min(internal_volume, fading_source - FixedMul(delta, factor)), fading_target);
 		else if (fading_target > fading_source)
-			internal_volume = min(max(internal_volume, fading_source + (UINT8)round(delta * factor)), fading_target);
+			internal_volume = min(max(internal_volume, fading_source + FixedMul(delta, factor)), fading_target);
 		Mix_VolumeMusic(get_real_volume(music_volume));
 		return interval;
 	}
@@ -1289,7 +1289,7 @@ void I_StopSong(void)
 	var_cleanup();
 }
 
-void I_PauseSong()
+void I_PauseSong(void)
 {
 	if(I_SongType() == MU_MID) // really, SDL Mixer? why can't you pause MIDI???
 		return;
@@ -1301,7 +1301,7 @@ void I_PauseSong()
 	songpaused = true;
 }
 
-void I_ResumeSong()
+void I_ResumeSong(void)
 {
 	if (I_SongType() == MU_MID)
 		return;