diff --git a/Graphics/Gloss/Internals/Data/Picture.hs b/Graphics/Gloss/Internals/Data/Picture.hs
--- a/Graphics/Gloss/Internals/Data/Picture.hs
+++ b/Graphics/Gloss/Internals/Data/Picture.hs
@@ -182,7 +182,7 @@
         BSU.unsafeUseAsCString bs
          $ \cstr -> copyBytes ptr (castPtr cstr) len
 
-        let bdata = BitmapData len (BitmapFormat BottomToTop PxABGR) fptr
+        let bdata = BitmapData len (BitmapFormat BottomToTop PxRGBA) fptr
 
         return $ Bitmap width height bdata True
 {-# NOINLINE bitmapOfBMP #-}
diff --git a/Graphics/Gloss/Internals/Rendering/Picture.hs b/Graphics/Gloss/Internals/Rendering/Picture.hs
--- a/Graphics/Gloss/Internals/Rendering/Picture.hs
+++ b/Graphics/Gloss/Internals/Rendering/Picture.hs
@@ -291,9 +291,11 @@
 
 installTexture width height bitmapData@(BitmapData _ fmt fptr) cacheMe
  = do   
-        let glFormat = case pixelFormat fmt of
-                           PxABGR -> GL.RGBA
-                           PxRGBA -> GL.ABGR
+        let glFormat 
+                = case pixelFormat fmt of
+                        PxABGR -> GL.ABGR
+                        PxRGBA -> GL.RGBA
+
         -- Allocate texture handle for texture
         [tex] <- GL.genObjectNames 1
         GL.textureBinding GL.Texture2D $= Just tex
@@ -312,7 +314,7 @@
                         (gsizei width)
                         (gsizei height))
                 0
-                (GL.PixelData glFormat GL.UnsignedInt8888 ptr)
+                (GL.PixelData glFormat GL.UnsignedInt8888Rev ptr)
 
         -- Make a stable name that we can use to identify this data again.
         -- If the user gives us the same texture data at the same size then we
diff --git a/gloss-rendering.cabal b/gloss-rendering.cabal
--- a/gloss-rendering.cabal
+++ b/gloss-rendering.cabal
@@ -1,5 +1,5 @@
 name:           gloss-rendering
-version:        1.10.3.3
+version:        1.10.3.4
 license:        MIT
 license-file:   LICENSE
 author:         Elise Huard
