public void Draw(TextView textView, DrawingContext drawingContext)
        {
            var typeface = textView.GetValue(TextBlock.FontFamilyProperty);
            var emSize   = textView.GetValue(TextBlock.FontSizeProperty);

            var formattedText = TextFormatterFactory.CreateFormattedText(
                textView,
                "9",
                typeface,
                emSize,
                Brushes.Black
                );

            var charSize  = formattedText.Measure();
            var pixelSize = PixelSnapHelpers.GetPixelSize(textView);

            foreach (var entry in markers.Where(e => e.Length > 0))
            {
                if (entry.StartOffset <= textView.Document.TextLength)
                {
                    var startLine = textView.Document.GetLineByOffset(entry.StartOffset);

                    var start = entry.StartOffset;

                    var startChar = textView.Document.GetCharAt(startLine.Offset);

                    if (char.IsWhiteSpace(startChar))
                    {
                        start = TextUtilities.GetNextCaretPosition(textView.Document, startLine.Offset, LogicalDirection.Forward,
                                                                   CaretPositioningMode.WordBorder);
                    }

                    var endLine = textView.Document.GetLineByOffset(entry.EndOffset <= textView.Document.TextLength ? entry.EndOffset : textView.Document.TextLength);

                    if (endLine.EndOffset > start && startLine != endLine)
                    {
                        var newEntry = new TextSegment()
                        {
                            StartOffset = start, EndOffset = endLine.EndOffset
                        };

                        var rects = BackgroundGeometryBuilder.GetRectsForSegment(textView, newEntry);

                        var rect = GetRectForRange(rects);

                        if (!rect.IsEmpty)
                        {
                            var startColumn = textView.Document.GetLocation(newEntry.StartOffset).Column - 1;
                            var endColumn   = textView.Document.GetLocation(newEntry.EndOffset).Column - 2;

                            var xPos = charSize.Width * Math.Min(startColumn, endColumn);

                            rect = rect.WithX(xPos + (charSize.Width / 2));

                            rect = rect.WithX(PixelSnapHelpers.PixelAlign(rect.X, pixelSize.Width));
                            rect = rect.WithY(PixelSnapHelpers.PixelAlign(rect.Y, pixelSize.Height));

                            drawingContext.DrawLine(_pen, rect.TopLeft, rect.BottomLeft);
                        }
                    }
                }
            }
        }