anchor.diff:    else
       ix := (2 + (Ord(FChecked) * 2)) - Ord(FChecked);
   
  -  // calc the text offset and checkbox offset
  -  if FBoxLayout = tbLeftBox then
  -  begin
  -    tx := r.right + 8;
  -    inc(r.left, 2);
  -  end
  -  else
  -    tx := 3;  // leave space for focus rectangle
  -  inc(r.top, 1);
     // paint the check (in this case a X)
     img := fpgImages.GetImage('sys.checkboxes');    // Do NOT localize
  -  Canvas.DrawImagePart(r.Left, r.Top, img, ix*13, 0, 13, 13);
  -
  -  ty := (Height div 2) - (Font.Height div 2);
  -  if ty < 0 then
  -    ty := 0;
  +  Canvas.DrawImagePart(r.Left, r.Top, img, ix*FBoxSize, 0, FBoxSize, FBoxSize);
  +
  +  r := GetClientRect;
  +  { max focus rectangle and text boundry }
  +  InflateRect(r, -1, -1);
  +  { exclude the checkbox image and spacing from rectangle }
  +  if FBoxLayout = tbLeftBox then
  +  begin
  +    r.Left  := r.Left + FBoxSize + FImgTextSpacing;
  +    r.Width := r.Width - FBoxSize - FImgTextSpacing;
  +  end
  +  else
  +    r.Width := r.Width - FBoxSize - FImgTextSpacing;
  +
     Canvas.SetTextColor(FTextColor);
  -  Canvas.ClearClipRect;
  -  cliprect.SetRect(tx, ty, Width-FBoxSize-8, cliprect.Height);
  -  Canvas.SetClipRect(cliprect);
  -  fpgStyle.DrawString(Canvas, tx, ty, FText, Enabled);
  +  Canvas.SetClipRect(r);
  +
  +  if Enabled then
  +    LFlags := [txtLeft, txtVCenter]
  +  else
  +    LFlags := [txtLeft, txtVCenter, txtDisabled];
  +  Canvas.DrawText(r, FText, LFlags);   { internally this still calls fpgStyle.DrawString(), so theming will be applied }
  +
  +  if FFocused then
  +  begin
  +    Canvas.ClearClipRect;
  +    { adjust focusrect-to-text margin }
  +    if FBoxLayout = tbLeftBox then
  +    begin
  +      r.Left := r.Left - 2;
  +      r.Width := r.Width + 2;
  +    end
  +    else
  +    begin
  +      r.Width := r.Width + 2;
  +    end;
  +    { undo the 2px focusrect-to-text margin, so we simply use the clip rect }
  +    fpgStyle.DrawFocusRect(Canvas, r);
  +  end;
   end;
   
   procedure TfpgBaseCheckBox.HandleLMouseDown(x, y: integer; shiftstate: TShiftState);
  
positive.code:   FTextColor  := Parent.TextColor;
    FBackgroundColor := Parent.BackgroundColor;
    FFocusable  := True;
    FBoxSize    := 14;
    FChecked    := False;
    FIsPressed  := False;
    FOnChange   := nil;
  
negative.code:     FFont: TfpgFont;
      FBoxLayout: TBoxLayout;
      FBoxSize: integer;
      FImgTextSpacing: integer;
      FIsPressed: boolean;
      function    GetBoxLayout: TBoxLayout;
      function    GetFontDesc: string;
  