I think that you can't draw Device Independent Bitmap directly with GDI+ as it doesn't use the bitmap header of the bitmap. You need to create your own DIBSection and apply to it first (Ignore (3) because you're not drawing towards the DIBSection with GDI+).
You can refer to how to do it here (It's in C++ code but not too difficult to relate it to C#, as except the GetDC() call will be Graphics.GetHdc() and ReleaseDC() will be Graphics.ReleaseHdc(), the other things will be calling P/Invoke to corresponding GDI APIs.
Remember to call DeleteObject() to free the DIBSection afterwards.