diff --git a/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java b/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java
index ef74891..20236a6 100644
--- a/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java
+++ b/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java
@@ -53,7 +53,15 @@
 						+ "// Empty lines show a header annotating they're empty.\n"
 						+ "// The word `echo` is echoed.\n"
 						+ "// Lines containing `end` get an annotation at their end\n\n"
-						+ "class A\n" + "new A\n" + "new A\n\n" + "class 5\n" + "new 5\n" + "new 5\n" + "new 5"),
+						+ "class A\n" //
+						+ "new A\n" //
+						+ "new A\n\n" //
+						+ "code mining at end here\n"
+						+ "code mining at end here with CRLF\r\n"
+						+ "class 5\n" //
+						+ "new 5\n" //
+						+ "new 5\n" //
+						+ "new 5\n"),
 				new AnnotationModel());
 		// Add AnnotationPainter (required by CodeMining)
 		addAnnotationPainter(sourceViewer);
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineEndCodeMining.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineEndCodeMining.java
index 2386173..e52786f 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineEndCodeMining.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/codemining/LineEndCodeMining.java
@@ -27,10 +27,10 @@
 
 	private static Position getLineEndPosition(IDocument document, int line) throws BadLocationException {
 		int lastCharOffset= document.getLineOffset(line) + document.getLineLength(line);
-		if (lastCharOffset < document.getLength()) {
-			lastCharOffset--; // place on the newline \n char, not on 1st char of next line
-		}
-		return new Position(lastCharOffset);
+		String delimiter= document.getLineDelimiter(line);
+		return delimiter == null ? // last line of document
+				new Position(document.getLength(), 0) : //
+				new Position(lastCharOffset - delimiter.length(), delimiter.length());
 	}
 
 }
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
index 2b28b01..7a4ba95 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
@@ -143,7 +143,9 @@
 			annotation.draw(gc, textWidget, widgetOffset, length, color, 0, 0);
 		} else {
 			int line= textWidget.getLineAtOffset(widgetOffset);
-			int lineEndOffset= widgetOffset < textWidget.getCharCount() ? widgetOffset : textWidget.getCharCount() - 1;
+			int lineEndOffset= (line == textWidget.getLineCount() - 1) ? //
+					textWidget.getCharCount() - 1 : //
+					textWidget.getOffsetAtLine(line + 1) - 1;
 			Rectangle bounds= textWidget.getTextBounds(lineEndOffset, lineEndOffset);
 			int lineEndX= bounds.x + bounds.width + gc.stringExtent("   ").x; //$NON-NLS-1$
 			annotation.setLocation(lineEndX, textWidget.getLinePixel(line) + textWidget.getLineVerticalIndent(line));
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
index 62a1752..0c10b8a 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
@@ -159,8 +159,14 @@
 	}
 
 	boolean isEndOfLine(int widgetOffset) {
-		return getTextWidget().getCharCount() == 0 || getTextWidget().getCharCount() <= widgetOffset ||
-				"\n".equals(getTextWidget().getText(widgetOffset, widgetOffset)); //$NON-NLS-1$
+		StyledText text= getTextWidget();
+		if (text.getCharCount() <= widgetOffset) { // Assuming widgetOffset >= 0
+			return true;
+		}
+		int line= text.getLineAtOffset(widgetOffset);
+		int startOfLine= text.getOffsetAtLine(line);
+		int offsetInLine= widgetOffset - startOfLine;
+		return offsetInLine >= text.getLine(line).length();
 	}
 
 }
