#uses opbitmap (lazbridge)
procedure TForm1.Button2Click(Sender: TObject);
var
  ConvBitmap: TCanvasOPBitmap;
  px, py: integer;
  Line: PAPixel32;
begin
  ConvBitmap := TCanvasOPBitmap.Create();

  AssignBitmapToOpBitmap(image1.Picture.Bitmap, ConvBitmap);
  ConvBitmap.PixelFormat := opbitmap.pf24bit;
  for py := 0 to ConvBitmap.Height - 1 do
  begin
    Line := ConvBitmap.ScanLine[py];
    for px := 0 to ConvBitmap.Width - 1 do
    begin
      if ((pRGBTRiple(Line)[px].rgbtBlue <> 255) or (pRGBTRiple(Line)[px].rgbtRed <> 255) or (pRGBTRiple(Line)[px].rgbtGreen <> 255)) then
      begin
        pRGBTRiple(Line)[px].rgbtBlue := 255;
        pRGBTRiple(Line)[px].rgbtRed := 255;
        pRGBTRiple(Line)[px].rgbtGreen := 255;
      end
      else
      begin
        pRGBTRiple(Line)[px].rgbtBlue := 0;
        pRGBTRiple(Line)[px].rgbtRed := 0;
        pRGBTRiple(Line)[px].rgbtGreen := 0;
      end;
    end;
  end;

  AssignOpBitmapToBitmap(ConvBitmap, Image2.Picture.Bitmap);

  Image2.Repaint;

  ConvBitmap.Free;
end;