diff --git a/src/syncterm/CHANGES b/src/syncterm/CHANGES
index 97ee41f562e4a344c0095548f706975544240ce2..56e2df9c13055bee4a0e12cc281ada1f352183e0 100644
--- a/src/syncterm/CHANGES
+++ b/src/syncterm/CHANGES
@@ -8,6 +8,7 @@ Better socket disconnect detection in SSH and telnets sessions
 Fix X11 mode scaling and fullscreen with minimal X servers
 Massively improve output performance
 Add option to configure audio output
+Lower audio output volume by 12dB
 
 Version 1.4a
 ------------
diff --git a/src/xpdev/xpbeep.c b/src/xpdev/xpbeep.c
index 988bb361adf9c73f56b67e6eb2deeeb1a9621d93..bfd66675394304530a1ee7452102234eec19ca9c 100644
--- a/src/xpdev/xpbeep.c
+++ b/src/xpdev/xpbeep.c
@@ -277,6 +277,12 @@ void xptone_makewave(double freq, unsigned char *wave, int samples, enum WAVE_SH
 					wave[i] += (sin ((inc * 3) * (double)i)) * 16;
 					break;
 			}
+			/*
+			 * TODO: It's silly to do this here, but the excessive wrapping above
+			 * makes it the only sane way to do it and keep the noises as is.
+			 */
+			// Reduce by 12dB
+			wave[i] = ((((double)wave[i]) - 128) * 0.251) + 128;
 		}
 
 		/* Now we have a "perfect" wave...