diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java
index f5c43be..6ef638b 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationSupport.java
@@ -23,6 +23,8 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.StyleRange;
 import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.events.MouseMoveListener;
@@ -126,17 +128,17 @@
 	 * Class to track start/end offset of visible lines.
 	 *
 	 */
-	private class VisibleLines implements IViewportListener, IDocumentListener {
+	private class VisibleLines implements IViewportListener, IDocumentListener, ControlListener {
 
 		private int startOffset;
 
 		private Integer endOffset;
 
 		public VisibleLines() {
+			install();
 			fViewer.getTextWidget().getDisplay().asyncExec(() -> {
 				compute();
 			});
-			fViewer.getDocument().addDocumentListener(this);
 		}
 
 		@Override
@@ -154,6 +156,16 @@
 			// Do nothing
 		}
 
+		@Override
+		public void controlMoved(ControlEvent e) {
+			// Do nothing
+		}
+
+		@Override
+		public void controlResized(ControlEvent e) {
+			compute();
+		}
+
 		@SuppressWarnings("boxing")
 		private void compute() {
 			startOffset= getInclusiveTopIndexStartOffset();
@@ -225,10 +237,22 @@
 		 * Uninstall visible lines
 		 */
 		void uninstall() {
-			if (fViewer != null && fViewer.getDocument() != null) {
-				fViewer.getDocument().removeDocumentListener(this);
+			if (fViewer != null) {
+				fViewer.removeViewportListener(this);
+				if (fViewer.getDocument() != null) {
+					fViewer.getDocument().removeDocumentListener(this);
+				}
+				if (fViewer.getTextWidget() != null) {
+					fViewer.getTextWidget().removeControlListener(this);
+				}
 			}
 		}
+
+		void install() {
+			fViewer.addViewportListener(this);
+			fViewer.getDocument().addDocumentListener(this);
+			fViewer.getTextWidget().addControlListener(this);
+		}
 	}
 
 	private class MouseTracker implements MouseMoveListener, MouseListener {
@@ -329,7 +353,6 @@
 			((ITextViewerExtension4) fViewer).addTextPresentationListener(updateStylesWidth);
 		}
 		visibleLines= new VisibleLines();
-		fViewer.addViewportListener(visibleLines);
 		text.addMouseListener(fMouseTracker);
 		text.addMouseMoveListener(fMouseTracker);
 		setColor(text.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY));
@@ -365,7 +388,6 @@
 			if (fViewer instanceof ITextViewerExtension4) {
 				((ITextViewerExtension4) fViewer).removeTextPresentationListener(updateStylesWidth);
 			}
-			fViewer.removeViewportListener(visibleLines);
 		}
 		if (visibleLines != null) {
 			visibleLines.uninstall();
