Pin an array in memory and construct a Bitmap using that buffer
I cannot complain about your code much. You declare variables as readonly where appropriate and you use the try/finally block to free the resources.

The only things I don't like are these properties


public int Width { get; set; }
public int Height { get; set; }



you don't want them to be settable. The setter should be private.



and the magic numbers here (and in other places).


_buffer[i + 1] = color.R;
_buffer[i + 2] = color.G;
_buffer[i + 3] = color.B;



I find you should use a helper class for them:

static class ColorOffset
{
    public const int Alpha = 0;
    public const int Red = 1;
    public const int Green = 2;
    public const int Blue = 3;
}

_buffer[i + ColorOffset.Red] = color.R;
_buffer[i + ColorOffset.Green] = color.G;
_buffer[i + ColorOffset.Blue] = color.B;