diff --git a/ChangeLog b/ChangeLog
index d910f796a6..697d392b5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-06-14  David Schleef  <ds@schleef.org>
+
+	* gst/volume/demo.c: (value_changed_callback): exp10() is not
+	standard.  Thank you for playing.
+
 2004-06-14  Wim Taymans  <wim@fluendo.com>
 
 	* gst/ffmpegcolorspace/imgconvert.c: (img_convert):
diff --git a/gst/volume/demo.c b/gst/volume/demo.c
index ed36eb327c..ef5b4797aa 100644
--- a/gst/volume/demo.c
+++ b/gst/volume/demo.c
@@ -33,6 +33,10 @@
 GtkWidget *elapsed;
 GtkWidget *scale;
 
+#ifndef M_LN10
+#define M_LN10 (log(10.0))
+#endif
+
 static void
 value_changed_callback (GtkWidget * widget, GstElement * volume)
 {
@@ -40,7 +44,7 @@ value_changed_callback (GtkWidget * widget, GstElement * volume)
   gdouble level;
 
   value = gtk_range_get_value (GTK_RANGE (widget));
-  level = exp10 (value / 20.0);
+  level = exp (value / 20.0 * M_LN10);
   g_print ("Value: %f dB, level: %f\n", value, level);
   g_object_set (volume, "volume", level, NULL);
 }