anchor.diff:                  Ei := UTF8Length(S);
                 SS := UTF8Copy(S, 1, Ei);
                 R.SetRect(X, Y, (UTF8Length(SS) * FChrW), FChrH);
  -              Canvas.XORFillRectangle(fpgColorToRGB(clSelection) xor $FFFFFF, R);
  +              Canvas.FillRectangle(R);
  +              Canvas.DrawText(R, SS);
               end;
             end;
           end;
         end;
       end; { if FSelected... }
  -  end;  { if AllowDraw... }
  +//  end;  { if AllowDraw... }
   
     if UTF8Length(S) > FMaxScrollH then
     begin
  
positive.code:   if AllowDraw then
    begin
      Canvas.DrawText(R, S);
      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.XORFillRectangle(fpgColorToRGB(clSelection) xor $FFFFFF, R);
        end
        else
        begin
  
negative.code:           else
              SS := UTF8Copy(S, Si + 1, Ei - Si);
            R.SetRect(X+(Si * FChrW), Y, (UTF8Length(SS) * FChrW), FChrH);
            Canvas.FillRectangle(R);
            Canvas.DrawText(R, SS);
          end
          else
          begin
  