I’m loading my textures with a working DDS loader but there seems to be an issue with the RGBA4 format ( GL_UNSIGNED_SHORT_4_4_4_4 ) which is drawn skewed.
I’m using the same shader on the background ( which is working but uses RGB565 ) and the other texture.
Here is a screenshot:

As you can see the texture is skewed, it should be a back button.
The texture loading is correct too, it loads all bytes it should load ( debugged this ) and the OpenGL loading looks like this:
GL.TexImage2D(All.Texture2D, 0, (int)All.Rgba, Width, Height, 0, (int)All.Rgba, All.UnsignedShort4444, image.GetData());
Image Data:
- Size: 16402 Bytes
- Width: 139px
- Height: 59px
Edit
The texture is npot but this should be supported by OpenGL ES 2.0.
Edit II
It seems i have 2 issues here, the first is that the channels are not correct, the second that the texture is skewed. The skewing may be a issue with NPOT textures and apple because i tested the another image which has a size of 128×128 and it is not skewed but it has some channels swapped.
Have you setup pixel alignment by calling glPixelStore?
By default, each row shall be aligned to 4 byte boundary.
The alignment parameter (GL_PACK_ALIGNMENT) does not depends on texture internasl format, but it depends on the source data.
Call glPixelStore before calling TexImage. Set the parameter to 1, and then study about the pixel transfer parameters!