Prueba a llamar a los métodos
BeginScene y
EndScene, tal y como te dice el error, antes de realizar la asignación.
En los propios links de ayuda, tienes ejemplos de uso.
Código Delphi
[-]...
img := Tbitmap.Create(Trunc(Firma.Width), Trunc(Firma.Height));
try
img.Canvas.BeginScene;
try
firma.PaintTo(img.Canvas, firma.LocalRect);
finally
img.Canvas.EndScene;
end;
m := TmemoryStream.Create;
try
img.SaveToStream(m);
Dataset.close;
Dataset.open;
Dataset.Edit;
Dataset.CampoFIRMA.LoadFromStream(m);
DataSet.post;
finally
FreeAndNil(m);
end;
finally
FreeAndNil(img);
end;