diff --git a/tests/glean/ttexswizzle.cpp b/tests/glean/ttexswizzle.cpp
index ca56d93..58ea5f9 100644
--- a/tests/glean/ttexswizzle.cpp
+++ b/tests/glean/ttexswizzle.cpp
@@ -79,12 +79,14 @@ TexSwizzleTest::RandomColor(GLubyte *color)
 
 
 void
-TexSwizzleTest::SetTextureColor(const GLubyte *color)
+TexSwizzleTest::SetTextureColor(const GLubyte *color, int format_pick)
 {
 	GLubyte texImage[TexSize][TexSize][4];
 	int i, j;
+	int format = format_pick ? GL_BGRA : GL_RGBA;
 
-	for (i = 0; i < TexSize; i++) {
+	if (!format_pick) {
+	  for (i = 0; i < TexSize; i++) {
 		for (j = 0; j < TexSize; j++) {
 			texImage[i][j][0] = color[0];
 			texImage[i][j][1] = color[1];
@@ -92,9 +94,19 @@ TexSwizzleTest::SetTextureColor(const GLubyte *color)
 			texImage[i][j][3] = color[3];
 		}
 	}
+	} else {
+	  for (i = 0; i < TexSize; i++) {
+		for (j = 0; j < TexSize; j++) {
+			texImage[i][j][2] = color[0];
+			texImage[i][j][1] = color[1];
+			texImage[i][j][0] = color[2];
+			texImage[i][j][3] = color[3];
+		}
+	  }
+	}
 
 	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TexSize, TexSize, 0,
-				 GL_RGBA, GL_UNSIGNED_BYTE, texImage);
+				 format, GL_UNSIGNED_BYTE, texImage);
 }
 
 
@@ -249,7 +261,7 @@ TexSwizzleTest::TestAPI(void)
 // drawing with a texture and checking if the results are correct.
 // return true/false for pass/fail
 bool
-TexSwizzleTest::TestSwizzles(void)
+TexSwizzleTest::TestSwizzles(int format_pick)
 {
 	static const GLenum swizzles[6] = {
 		GL_RED, GL_GREEN, GL_BLUE, GL_ALPHA, GL_ZERO, GL_ONE
@@ -270,7 +282,7 @@ TexSwizzleTest::TestSwizzles(void)
 			// Setup random texture color here (not in the innermost loop
 			// for _every_ iteration) just to speed things up a bit.
 			RandomColor(texColor);
-			SetTextureColor(texColor);
+			SetTextureColor(texColor, format_pick);
 
 			for (ib = 0; ib < 6; ib++) {
 				glTexParameteri(GL_TEXTURE_2D,
@@ -335,7 +347,7 @@ TexSwizzleTest::TestSwizzlesWithProgram(void)
 
 	glEnable(GL_FRAGMENT_PROGRAM_ARB);
 
-	bool pass = TestSwizzles();
+	bool pass = TestSwizzles(0);
 
 	glDisable(GL_FRAGMENT_PROGRAM_ARB);
 
@@ -384,7 +396,9 @@ TexSwizzleTest::runOne(TexSwizzleResult &r, Window &w)
 	r.pass = TestAPI();
 
 	if (r.pass) {
-		r.pass = TestSwizzles();
+		r.pass = TestSwizzles(0);
+		if (r.pass)
+		  r.pass |= TestSwizzles(1);
 	}
 
 	if (r.pass && GLUtils::haveExtension("GL_ARB_fragment_program")) {
diff --git a/tests/glean/ttexswizzle.h b/tests/glean/ttexswizzle.h
index efe3941..ea13cf4 100644
--- a/tests/glean/ttexswizzle.h
+++ b/tests/glean/ttexswizzle.h
@@ -60,7 +60,7 @@ private:
 	RandomBase rand;
 
 	void RandomColor(GLubyte *color);
-	void SetTextureColor(const GLubyte *color);
+	void SetTextureColor(const GLubyte *color, int format_pick);
 	GLubyte Swizzle(const GLubyte *texColor, GLenum swizzle);
 	void ComputeExpectedColor(const GLubyte *texColor,
 				  GLenum swizzleR,
@@ -77,7 +77,7 @@ private:
 			   const GLubyte *actual,
 			   const GLubyte *expected);
 	bool TestAPI(void);
-	bool TestSwizzles(void);
+	bool TestSwizzles(int pick_format);
 	bool TestSwizzlesWithProgram(void);
 	void Setup(void);
 };
