diff --git a/src/main.c b/src/main.c
index 450041f..de0bce5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -154,7 +154,7 @@ int main(int argc, char** argv) {
     glClear(GL_COLOR_BUFFER_BIT);
     
     fps_control(); // Who doesn't love FPS control?
-    if(!paused) update_space(); // Update the game.
+    if(!paused && !toolkit) update_space(); // Update the game.
 
     render_space();
     if(toolkit) toolkit_render();
diff --git a/src/opengl.c b/src/opengl.c
index b6d3bcd..707b826 100644
--- a/src/opengl.c
+++ b/src/opengl.c
@@ -358,65 +358,64 @@ void gl_blitSprite(const glTexture* sprite, const Vec2* pos, const int sx, const
         fabs(VY(*pos) -VY(*gl_camera)+gui_yoff) > gl_screen.h / 2 + sprite->sh / 2)
     return;
 
-  glEnable(GL_TEXTURE_2D);
-  glMatrixMode(GL_TEXTURE);
-  glPushMatrix();
-  glTranslated(sprite->sw * (double)(sx)/sprite->rw,
-        sprite->sh*(sprite->sy-(double)sy-1)/sprite->rh, 0.);
+  double x, y, tx, ty;
 
-  glMatrixMode(GL_PROJECTION);
-  glPushMatrix(); // Projection translation matrix.
-  glTranslated(VX(*pos) - VX(*gl_camera) - sprite->sw/2. + gui_xoff,
-        VY(*pos) -VY(*gl_camera) - sprite->sh/2. + gui_yoff, 0.);
-  //glScalef((double)gl_screen.w/SCREEN_W, (double)gl_screen.h/SCREEN_H, 0.);
+  x = VX(*pos) - VX(*gl_camera) - sprite->sw/2. + gui_xoff;
+  y = VY(*pos) - VY(*gl_camera) - sprite->sh/2. + gui_yoff;
+
+  tx = sprite->sw * (double)(sx)/sprite->rw;
+  ty = sprite->sh * (sprite->sy-(double)sy-1)/sprite->rh;
 
   // Actual blitting....
   glBindTexture(GL_TEXTURE_2D, sprite->texture);
-  glBegin(GL_TRIANGLE_STRIP);
+  glBegin(GL_QUADS);
     if(c == NULL) glColor4d(1., 1., 1., 1.);
     else COLOUR(*c);
-    glTexCoord2d(0., 0.);
-      glVertex2d(0., 0.);
-    glTexCoord2d(sprite->sw/sprite->rw, 0.);
-      glVertex2d(sprite->sw, 0.);
-    glTexCoord2d(0., sprite->sh/sprite->rh);
-      glVertex2d(0., sprite->sh);
-    glTexCoord2d(sprite->sw/sprite->rw, sprite->sh/sprite->rh);
-      glVertex2d(sprite->sw, sprite->sh);
+
+    glTexCoord2d(tx, ty);
+      glVertex2d(x, y);
+
+    glTexCoord2d(tx + sprite->sw/sprite->rw, ty);
+      glVertex2d(x + sprite->sw, y);
+
+    glTexCoord2d(tx + sprite->sw/sprite->rw, ty + sprite->sh/sprite->rh);
+      glVertex2d(x + sprite->sw, y + sprite->sh);
+
+    glTexCoord2d(tx, ty + sprite->sh/sprite->rh);
+      glVertex2d(x, y + sprite->sh);
+
   glEnd();
 
-  glPopMatrix(); // Projection translation matrix.
-
-  glMatrixMode(GL_TEXTURE);
-  glPopMatrix(); // Sprite translation matrix.
-  
   glDisable(GL_TEXTURE_2D);
 }
 
 // Just straight out blit the thing at position.
 void gl_blitStatic(const glTexture* texture, const Vec2* pos, const glColour* c) {
+  double x, y;
   glEnable(GL_TEXTURE_2D);
-  glMatrixMode(GL_PROJECTION);
-  glPushMatrix(); // Set up translation matrix.
-  glTranslated(VX(*pos) - (double)gl_screen.w/2., VY(*pos) - (double)gl_screen.h/2., 0);
-  //glScaled((double)gl_screen.w/SCREEN_W, (double)gl_screen.h/SCREEN_H, 0.);
   
+  x = VX(*pos) - (double)gl_screen.w/2.;
+  y = VY(*pos) - (double)gl_screen.h/2.;
+
   // Actual blitting..
   glBindTexture(GL_TEXTURE_2D, texture->texture);
-  glBegin(GL_TRIANGLE_STRIP);
+  glBegin(GL_QUADS);
     if(c == NULL) glColor4d(1., 1., 1., 1.);
     else COLOUR(*c);
+    
     glTexCoord2d(0., 0.);
-      glVertex2d(0., 0.);
-    glTexCoord2d(texture->sw/texture->rw, 0.);
-      glVertex2d(texture->sw, 0.);
-    glTexCoord2d(0., texture->sh/texture->rh);
-      glVertex2d(0., texture->sh);
-    glTexCoord2d(texture->sw/texture->rw, texture->sh/texture->rh);
-      glVertex2d(texture->sw, texture->h);
-  glEnd();
+      glVertex2d(x, y);
 
-  glPopMatrix(); // Pop the translation matrix.
+    glTexCoord2d(texture->sw/texture->rw, 0.);
+      glVertex2d(x + texture->sw, y);
+
+    glTexCoord2d(texture->sw/texture->rw, texture->sh/texture->rh);
+      glVertex2d(x + texture->sw, y + texture->sh);
+
+    glTexCoord2d(0., texture->sh/texture->rh);
+      glVertex2d(x, y + texture->sh);
+
+  glEnd();
 
   glDisable(GL_TEXTURE_2D);
 }
@@ -448,8 +447,7 @@ void gl_print(const glFont* ft_font, const double x, const double y,
 
   glListBase(ft_font->list_base);
 
-  glMatrixMode(GL_PROJECTION);
-
+  glMatrixMode(GL_MODELVIEW);
   glPushMatrix(); // Translation matrix.
   glTranslated(x - (double)gl_screen.w/2., y - (double)gl_screen.h/2., 0);
 
@@ -704,7 +702,8 @@ int gl_init(void) {
   glDisable(GL_DEPTH_TEST); // Set for doing 2D shidazles.
   //glEnable(GL_TEXTURE_2D); // Don't enable globally, it will break non-texture blits.
   glDisable(GL_LIGHTING); // No lighting, it is done when rendered.
-  glMatrixMode(GL_PROJECTION);
+  glEnable(GL_BLEND);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(-SCREEN_W /2,   // Left edge.
@@ -713,10 +712,7 @@ int gl_init(void) {
           SCREEN_H  /2,   // Top edge.
           -1.,            // Near.
           1.);            // Far.
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Alpha.
-  glEnable(GL_BLEND);
-
-  glPointSize(1.); // Default is 1.
+  
   glClear(GL_COLOR_BUFFER_BIT);
 
   return 0;