diff --git a/Outputs/OpenGL/ScanTarget.cpp b/Outputs/OpenGL/ScanTarget.cpp index b4b1a4fe4..f4d9e84b5 100644 --- a/Outputs/OpenGL/ScanTarget.cpp +++ b/Outputs/OpenGL/ScanTarget.cpp @@ -229,8 +229,10 @@ void ScanTarget::end_data(size_t actual_length) { data_type_size_); // The write area was allocated in the knowledge that there's sufficient - // distance left on the current line, so there's no need to worry about carry. + // distance left on the current line, but there's a risk of exactly filling + // the final line, in which case this should wrap back to 0. write_pointers_.write_area += actual_length + 1; + write_pointers_.write_area %= write_area_texture_.size(); // Also bookend the end. memcpy(