diff --git a/NEWS b/NEWS
index 48ae6f8af..8056bb7ba 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ ver 0.23.8 (not yet released)
   - cdio_paranoia: faster cancellation
   - cdio_paranoia: don't scan for replay gain tags
   - pipewire: fix playback of very short tracks
+  - pipewire: drop all buffers before manual song change
   - snapcast: fix busy loop while paused
   - snapcast: fix stuttering after resuming playback
 * mixer
diff --git a/src/output/plugins/PipeWireOutputPlugin.cxx b/src/output/plugins/PipeWireOutputPlugin.cxx
index 7184edfa5..0f8550d41 100644
--- a/src/output/plugins/PipeWireOutputPlugin.cxx
+++ b/src/output/plugins/PipeWireOutputPlugin.cxx
@@ -895,7 +895,12 @@ PipeWireOutput::Cancel() noexcept
 	if (drained)
 		return;
 
+	/* clear MPD's ring buffer */
 	ring_buffer->reset();
+
+	/* clear libpipewire's buffer */
+	pw_stream_flush(stream, false);
+	drained = true;
 }
 
 bool