It is not necessary to use Marshal, you can use something like this:
graphics.DrawImage (
bitmap,
new Rectangle ( 0, 0, Width, Height ),
new Rectangle ( 0, 0, Width, Height ),
GraphicsUnit.Pixel );
As this might be too slow for you, maybe this will be more to your liking:
Fast Pointerless Image Processing in .NET[
^]