This patch seems to fix the problem.

diff --git i/src/xdisp.c w/src/xdisp.c
index 563cf473cf..a2d605f3ea 100644
--- i/src/xdisp.c
+++ w/src/xdisp.c
@@ -22679,9 +22679,11 @@ maybe_produce_line_number (struct it *it)
   && it->what != IT_EOB)
  tem_it.face_id = current_lnum_face_id;
-      else if (display_line_numbers_major_tick > 0
+      else if (!beyond_zv
+       && display_line_numbers_major_tick > 0
        && (lnum_to_display % display_line_numbers_major_tick == 0))
  tem_it.face_id = merge_faces (it->w, Qline_number_major_tick,
       0, DEFAULT_FACE_ID);
-      else if (display_line_numbers_minor_tick > 0
+      else if (!beyond_zv
+       && display_line_numbers_minor_tick > 0
        && (lnum_to_display % display_line_numbers_minor_tick == 0))
  tem_it.face_id = merge_faces (it->w, Qline_number_minor_tick,