Index: /xmms-musepack/branches/r2d/src/libmpc.cpp
===================================================================
--- /xmms-musepack/branches/r2d/src/libmpc.cpp	(revision 217)
+++ /xmms-musepack/branches/r2d/src/libmpc.cpp	(revision 218)
@@ -545,8 +545,8 @@
             mpcGtkPrintLabel(lengthLabel,    "Length: \%d:\%.2d", minutes, seconds);
             mpcGtkPrintLabel(fileSizeLabel,  "File size: \%d Bytes", info.total_file_length);
-            mpcGtkPrintLabel(trackPeakLabel, "Track Peak: \%5u", info.peak_title);
-            mpcGtkPrintLabel(trackGainLabel, "Track Gain: \%-+2.2f dB", 0.01 * info.gain_title);
-            mpcGtkPrintLabel(albumPeakLabel, "Album Peak: \%5u", info.peak_album);
-            mpcGtkPrintLabel(albumGainLabel, "Album Gain: \%-+5.2f dB", 0.01 * info.gain_album);
+			mpcGtkPrintLabel(trackPeakLabel, "Track Peak: \%2.2f dB", info.peak_title / 256.);
+			mpcGtkPrintLabel(trackGainLabel, "Track Gain: \%2.2f dB", info.gain_title / 256.);
+			mpcGtkPrintLabel(albumPeakLabel, "Album Peak: \%2.2f dB", info.peak_album / 256.);
+			mpcGtkPrintLabel(albumGainLabel, "Album Gain: \%2.2f dB", info.gain_album / 256.);
 
             MpcInfo tags = getTags(p_Filename);
@@ -782,5 +782,5 @@
 
 // 	mpc_decoder_set_seeking(decoder, &info, pluginConfig.fastSeek);
-//     setReplaygain(info, *decoder);
+    setReplaygain(demux);
 
     MPC_SAMPLE_FORMAT sampleBuffer[MPC_DECODER_BUFFER_LENGTH];
@@ -867,27 +867,8 @@
 }
 
-static void setReplaygain(mpc_streaminfo& info, mpc_decoder& decoder)
-{
-    if(!pluginConfig.replaygain && !pluginConfig.clipPrevention)
-        return;
-
-    int peak    = pluginConfig.albumGain ? info.peak_album : info.peak_title;
-    double gain = pluginConfig.albumGain ? info.gain_album : info.gain_title;
-
-    if(!peak)
-        peak = 32767;
-    if(!gain)
-        gain = 1.;
-
-    double clip = 32767. / peak;
-    gain = exp((M_LN10 / 2000.) * gain);
-
-    if(pluginConfig.clipPrevention && !pluginConfig.replaygain)
-        gain = clip;
-    else if(pluginConfig.replaygain && pluginConfig.clipPrevention)
-        if(clip < gain)
-            gain = clip;
-
-    mpc_decoder_scale_output(&decoder, gain);
+static void setReplaygain(mpc_demux * d)
+{
+	setReplayLevel(d, 64.82, pluginConfig.replaygain, !pluginConfig.albumGain,
+				   pluginConfig.clipPrevention);
 }
 
Index: /xmms-musepack/branches/r2d/src/libmpc.h
===================================================================
--- /xmms-musepack/branches/r2d/src/libmpc.h	(revision 217)
+++ /xmms-musepack/branches/r2d/src/libmpc.h	(revision 218)
@@ -175,5 +175,5 @@
 static void       setOffset(double);
 static bool       isPause();
-static void       setReplaygain(mpc_streaminfo&, mpc_decoder&);
+static void       setReplaygain(mpc_demux *);
 
 #ifdef MPC_FIXED_POINT
