- some Caps clean-up when no OpenGL compiled in
- fix some fonts displaying problems

diff --git a/dlls/ddraw/d3ddevice/mesa.c b/dlls/ddraw/d3ddevice/mesa.c
index 0eb5e85..da1cd34 100644
--- a/dlls/ddraw/d3ddevice/mesa.c
+++ b/dlls/ddraw/d3ddevice/mesa.c
@@ -2069,6 +2069,15 @@
     
     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();
+    /* See the OpenGL Red Book for an explanation of the following translation (in the OpenGL
+       Correctness Tips section).
+       
+       Basically, from what I understood, if the game does not filter the font texture,
+       as the 'real' pixel will lie at the middle of the two texels, OpenGL may choose the wrong
+       one and we will have strange artifacts (as the rounding and stuff may give different results
+       for different pixels, ie sometimes take the left pixel, sometimes the right).
+    */
+    glTranslatef(0.375, 0.375, 0);
     glMatrixMode(GL_PROJECTION);
     glLoadMatrixf(trans_mat);
 }
diff --git a/dlls/ddraw/ddraw/user.c b/dlls/ddraw/ddraw/user.c
index 1721734..0ba30a6 100644
--- a/dlls/ddraw/ddraw/user.c
+++ b/dlls/ddraw/ddraw/user.c
@@ -172,7 +172,11 @@
 		| DDFXCAPS_BLTSHRINKY | DDFXCAPS_BLTSHRINKXN		\
 		| DDFXCAPS_BLTSTRETCHX | DDFXCAPS_BLTSTRETCHXN		\
 		| DDFXCAPS_BLTSTRETCHY | DDFXCAPS_BLTSTRETCHYN)
-    This->caps.dwCaps |= DDCAPS_GDI | DDCAPS_PALETTE | BLIT_CAPS /* Hack for D3D code */ | DDCAPS_3D;
+    This->caps.dwCaps |= DDCAPS_GDI | DDCAPS_PALETTE | BLIT_CAPS;
+#ifdef HAVE_OPENGL
+    /* Hack for D3D code */
+    This->caps.dwCaps |= DDCAPS_3D;
+#endif /* HAVE_OPENGL */
     This->caps.dwCaps2 |= DDCAPS2_CERTIFIED | DDCAPS2_NOPAGELOCKREQUIRED |
 			  DDCAPS2_PRIMARYGAMMA | DDCAPS2_WIDESURFACES;
     This->caps.dwCKeyCaps |= CKEY_CAPS;
@@ -193,8 +197,12 @@
 				 DDSCAPS_FLIP | DDSCAPS_FRONTBUFFER |
 				 DDSCAPS_OFFSCREENPLAIN | DDSCAPS_PALETTE |
 				 DDSCAPS_PRIMARYSURFACE | DDSCAPS_SYSTEMMEMORY |
-				 DDSCAPS_VIDEOMEMORY | DDSCAPS_VISIBLE | /* Hacks for D3D code */
-				 DDSCAPS_3DDEVICE | DDSCAPS_MIPMAP | DDSCAPS_TEXTURE | DDSCAPS_ZBUFFER;
+				 DDSCAPS_VIDEOMEMORY | DDSCAPS_VISIBLE;
+#ifdef HAVE_OPENGL
+    /* Hacks for D3D code */
+    This->caps.ddsCaps.dwCaps |= DDSCAPS_3DDEVICE | DDSCAPS_MIPMAP | DDSCAPS_TEXTURE | DDSCAPS_ZBUFFER;
+#endif /* HAVE_OPENGL */
+    
     This->caps.ddsOldCaps.dwCaps = This->caps.ddsCaps.dwCaps;
 #undef BLIT_CAPS
 #undef CKEY_CAPS