public unsafe Color GetPixel(int position)
{
Contract.Requires<NullReferenceException>(Data != null);
byte* TempPointer = DataPointer + (position * PixelSize);
return (PixelSize == 3) ?
Color.FromArgb(TempPointer[2], TempPointer[1], TempPointer[0]) :
Color.FromArgb(TempPointer[3], TempPointer[2], TempPointer[1], TempPointer[0]);
}