anchor.diff:  function TTableBlock.FindWidth(Canvas: TCanvas; AWidth, AHeight, AutoCount: Integer): Integer;
   var
     LeftSide, RightSide: Integer;
  -  Min, Max, Allow: Integer;
  +  Min, Max, M: Integer;
   begin
     if not HasCaption then
     begin
  
positive.code:             if HasBackgroundColor then
              begin
                DrawGpImage(FullBg.Canvas.Handle, TgpImage(TiledImage), 0, 0);
                PrintBitmap(Canvas, PL, FT, PR - PL, IH, FullBG);
              end
              else
                PrintGpImageDirect(Canvas.Handle, TgpImage(TiledImage), PL, PT,
                  ParentSectionList.ScaleX, ParentSectionList.ScaleY);
            end
            else
            {$ENDIF !NoGDIPlus}
            if NoMask then {printing}
              PrintBitmap(Canvas, PL, FT, PR - PL, IH, TBitmap(TiledImage))
            else if HasBackgroundColor then
            begin
              BitBlt(FullBG.Canvas.Handle, 0, 0, PR - PL, IH, TBitmap(TiledImage).Canvas.Handle, 0, IT, SrcInvert);
              BitBlt(FullBG.Canvas.Handle, 0, 0, PR - PL, IH, TiledMask.Canvas.Handle, 0, IT, SRCAND);
              BitBlt(FullBG.Canvas.Handle, 0, 0, PR - PL, IH, TBitmap(TiledImage).Canvas.Handle, 0, IT, SRCPaint);
              PrintBitmap(Canvas, PL, FT, PR - PL, IH, FullBG);
            end
            else
              PrintTransparentBitmap3(Canvas, PL, FT, PR - PL, IH, TBitmap(TiledImage), TiledMask, IT, IH)
          end;
  
        except
  
negative.code:       //RefX := X + Indent + XOffset;
        RefX := IMgr.LfEdge + max(0, MargArray[MarginLeft]) + ContentLeft;
        X := RefX;
        XR := X + NewWidth;
        RefY := DrawTop;
        YB := ContentBot;
      end;
    else
      RefX := X + MargArray[MarginLeft];
      X := X + Indent;
      XR := X + NewWidth + MargArray[PaddingRight] + MargArray[BorderRightWidth]; {current right edge}
      RefY := Y + ClearAddon + MargArray[MarginTop];
      YB := ContentBot - MargArray[MarginBottom];
      case Positioning of
        posRelative:
          Inc(YB, TopP);
      end;
    end;
  
    // MyRect is the outmost rectangle of this block incl. border and padding in screen coordinates
    MyRect := Rect(RefX, RefY - YOffset, XR, YB - YOffset);
  
    // PdRect is the border rectangle of this block incl. padding in screen coordinates
    PdRect.Left   := MyRect.Left   + MargArray[BorderLeftWidth];
    PdRect.Top    := MyRect.Top    + MargArray[BorderTopWidth];
    PdRect.Right  := MyRect.Right  - MargArray[BorderRightWidth];
    PdRect.Bottom := MyRect.Bottom - MargArray[BorderBottomWidth];
  
    IT := Max(0, ARect.Top - 2 - PdRect.Top);
    FT := Max(PdRect.Top, ARect.Top - 2); {top of area drawn, screen coordinates}
    IH := Min(PdRect.Bottom, ARect.Bottom) - FT; {height of area actually drawn}
    IW := PdRect.Right - PdRect.Left;
  
    SaveRgn1 := 0;
    OpenRgn := (Positioning <> PosStatic) and (ParentSectionList.TableNestLevel > 0);
  