diff --git a/src/dialog_progress.cpp b/src/dialog_progress.cpp
index 0d5312a5a914534da05d783418bd681aec86f78d..7ccfbc23c1b6b13d7640c4df53541e6fa0187e5f 100644
--- a/src/dialog_progress.cpp
+++ b/src/dialog_progress.cpp
@@ -199,7 +199,12 @@ void DialogProgress::OnShow(wxShowEvent&) {
 }
 
 void DialogProgress::OnIdle(wxIdleEvent&) {
-	if (progress_current != progress_target) {
+	if (progress_current > progress_target) {
+		progress_current = progress_target;
+		gauge->SetValue(progress_current);
+		set_taskbar_progress(progress_current / 3);
+	}
+	else if (progress_current < progress_target) {
 		using namespace std::chrono;
 		auto now = steady_clock::now();
 		int ms = mid<int>(0, duration_cast<milliseconds>(now - progress_anim_start_time).count(), progress_anim_duration);