diff --git a/aegisub/src/audio_karaoke.cpp b/aegisub/src/audio_karaoke.cpp
index 8425799e683c64d4c3c18d76cca2c447c7c3684f..1819970e67ffd0f8e4b5dcace6784c0061d02a41 100644
--- a/aegisub/src/audio_karaoke.cpp
+++ b/aegisub/src/audio_karaoke.cpp
@@ -72,6 +72,7 @@ AudioKaraoke::AudioKaraoke(wxWindow *parent, agi::Context *c)
 , active_line(0)
 , kara(new AssKaraoke)
 , scroll_x(0)
+, click_will_remove_split(false)
 , enabled(false)
 {
 	using std::tr1::bind;
@@ -169,7 +170,10 @@ void AudioKaraoke::OnPaint(wxPaintEvent &) {
 	dc.Blit(-scroll_x, 0, rendered_line.GetWidth(), h, &bmp_dc, 0, 0);
 
 	// Draw the split line under the mouse
-	dc.SetPen(*wxRED);
+	if (click_will_remove_split)
+		dc.SetPen(*wxRED);
+	else
+		dc.SetPen(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT));
 	dc.DrawLine(mouse_pos, 0, mouse_pos, h);
 
 	dc.SetPen(*wxTRANSPARENT_PEN);
@@ -303,12 +307,6 @@ void AudioKaraoke::OnMouse(wxMouseEvent &event) {
 
 	int shifted_pos = mouse_pos + scroll_x;
 
-	if (!event.LeftDown()) {
-		// Erase the old line and draw the new one
-		split_area->Refresh(false);
-		return;
-	}
-
 	// Character to insert the new split point before
 	int split_pos = std::min<int>((shifted_pos - char_width / 2) / char_width, spaced_text.size());
 
@@ -317,7 +315,17 @@ void AudioKaraoke::OnMouse(wxMouseEvent &event) {
 
 	// If the click is sufficiently close to a line of a syllable split,
 	// remove that split rather than adding a new one
-	if ((syl > 0 && shifted_pos <= syl_lines[syl - 1] + 2) || (syl < (int)syl_lines.size() && shifted_pos >= syl_lines[syl] - 2)) {
+	click_will_remove_split =
+		(syl > 0 && shifted_pos <= syl_lines[syl - 1] + 2) ||
+		(syl < (int)syl_lines.size() && shifted_pos >= syl_lines[syl] - 2);
+
+	if (!event.LeftDown()) {
+		// Erase the old line and draw the new one
+		split_area->Refresh(false);
+		return;
+	}
+
+	if (click_will_remove_split) {
 		kara->RemoveSplit(syl);
 	}
 	else {
diff --git a/aegisub/src/audio_karaoke.h b/aegisub/src/audio_karaoke.h
index 71cbb598f2cccf84552003790f2f80bdfd3f5caa..8b5db5b2102c9bfd6ab765c8058a4d6d38a103c7 100644
--- a/aegisub/src/audio_karaoke.h
+++ b/aegisub/src/audio_karaoke.h
@@ -97,13 +97,14 @@ class AudioKaraoke : public wxWindow, private SelectionListener<AssDialogue> {
 	/// Left x coordinate of each character in spaced_text in pixels
 	std::vector<int> char_x;
 
-	int scroll_x;
-	int scroll_dir;
-	wxTimer scroll_timer;
+	int scroll_x; ///< Distance the display has been shifted to the left in pixels
+	int scroll_dir; ///< Direction the display will be scrolled on scroll_timer ticks (+/- 1)
+	wxTimer scroll_timer; ///< Timer to scroll every 50ms when user holds down scroll button
 
 	int char_height; ///< Maximum character height in pixels
 	int char_width; ///< Maximum character width in pixels
 	int mouse_pos; ///< Last x coordinate of the mouse
+	bool click_will_remove_split; ///< If true a click at mouse_pos will remove a split rather than adding one
 
 	wxFont split_font; ///< Font used in the split/join interface