anchor.diff:                Ei := UTF8Length(S);
               SS := UTF8Copy(S, 1, Ei);
               R.SetRect(X, Y, (UTF8Length(SS) * FChrW), FChrH);
  +            Canvas.TextColor := clWhite;
  +            Canvas.Color := fpgColorToRGB(clSelection);
               Canvas.FillRectangle(R);
               Canvas.DrawText(R, SS);
             end;
  
positive.code:         begin
            SS := UTF8Copy(S, Si + 1, UTF8Length(S) - Si);
            R.SetRect(X+(Si * FChrW), Y, (UTF8Length(SS) * FChrW), FChrH);
            Canvas.FillRectangle(R);
            Canvas.DrawText(R, SS);
          end
  
negative.code: 
    if FSelected then
    begin
      if (ALineIndex > StartNo) and (ALineIndex < EndNo) then     // whole line is selected
      begin
        R.SetRect(X, Y, UTF8Length(S) * FChrW, FChrH);
        Canvas.TextColor := clWhite;
        Canvas.Color := fpgColorToRGB(clSelection);
        Canvas.FillRectangle(R);
        Canvas.DrawText(R, S);
      end
  