Image looks messed up

I am using glDrawPixels and passing a point to a byte array. However, when I see the image on the screen it is distorted.

Know facts:
The image data is not corrupted.
Format is GL_UNSIGNED_BYTE

Why is my image distorted?

Are you sure you’re passing the right format to glReadPixels, are you sure the width and height are correct, and are you sure that the image is really made of unsigned bytes?