anchor.diff:  
     c := p^;  // the sample
   
  +  for row := 0 to FHeight-1 do
  +  begin
  +    for col := 0 to FWidth-1 do
  +    begin
  +      n := PLongWord(FImageData)[row * FWidth + col];
  +      if n = c then
  +        { set Alpha value 100% transparent }
  +        PLongWord(FImageData)[row * FWidth + col] := n and $00FFFFFF;
  +    end;
  +  end;
  +
  +{$else}
  +
  +  AllocateMask;
  +  FMaskPoint := Point(x, y);
  +
  +  p := FImageData;
  +  if x < 0 then
  +    Inc(p, FWidth - 1)
  +  else
  +    Inc(p, x);
  +  if y < 0 then
  +    Inc(p, FWidth * (FHeight - 1))
  +  else
  +    Inc(p, FWidth * y);
  +
  +  c := p^;  // the sample
  +
     msklinelen := FWidth div 32;
     if (FWidth and $1F) > 0 then
       Inc(msklinelen);
  
positive.code: unit fpg_base;
  
  {$mode objfpc}{$H+}
  
  interface
  
  
negative.code: var
    p: ^longword;
    pmsk: ^byte;
    c, n: longword;
    linecnt: integer;
    pixelcnt: integer;
    bit: byte;
    msklinelen: integer;
    row, col: integer;
  begin
    if FColorDepth = 1 then
      Exit; //==>
  