diff --git a/src/conf.c b/src/conf.c
index 2b4cf07..9fb5142 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -87,6 +87,7 @@ void conf_setDefaults(void) {
   gl_screen.w = 800;
   gl_screen.h = 600;
   gl_screen.flags = 0;
+  gl_screen.fsaa = 4; /* Only used if activated. */
   /* Openal. */
   nosound = 0;
   /* Joystick. */
@@ -98,13 +99,16 @@ void conf_setDefaults(void) {
 
 /* Ok.. Parse a config file plox. */
 int conf_loadConfig(const char* file) {
-  int i = 0;
-  double d = 0.;
+  int i;
+  double d;
   char* str, *mod;
   int type, key, reverse;
-  int w, h;
+  int w, h, fsaa;
   SDLMod m;
 
+  i = 0;
+  d = 0.;
+
   lua_State* L = llua_newState();
   if(luaL_dofile(L, file) == 0) {
     /* Conf file exists indeed. */
@@ -112,6 +116,8 @@ int conf_loadConfig(const char* file) {
     conf_loadString("data", data);
 
     /* OpenGL properties.. */
+
+    /* Dimensions. */
     w = h = 0;
     conf_loadInt("width", w);
     conf_loadInt("height", h);
@@ -124,8 +130,18 @@ int conf_loadConfig(const char* file) {
       gl_screen.h = h;
     }
 
+    /* FSAA */
+    fsaa = 0;
+    conf_loadInt("fsaa", fsaa);
+    if(fsaa > 0) {
+      gl_screen.flags |= OPENGL_FSAA;
+      gl_screen.fsaa = fsaa;
+    }
+
+    /* Fullscreen. */
     conf_loadBool("fullscreen", i);
     if(i) { gl_screen.flags |= OPENGL_FULLSCREEN; i = 0; }
+    /* Anti Aliasing. */
     conf_loadBool("aa", i);
     if(i) {
       gl_screen.flags |= OPENGL_AA_POINT | OPENGL_AA_LINE || OPENGL_AA_POLYGON;
@@ -137,6 +153,7 @@ int conf_loadConfig(const char* file) {
         if(i) { gl_screen.flags |= OPENGL_AA_LINE; i = 0; }
     conf_loadBool("aa_polygon", i);
     if(i) { gl_screen.flags |= OPENGL_AA_POLYGON; i = 0; }
+    /* vsync. */
     conf_loadBool("vsync", i);
     if(i) { gl_screen.flags |= OPENGL_VSYNC; i = 0; }
     /* FPS. */
@@ -165,7 +182,6 @@ int conf_loadConfig(const char* file) {
       lua_remove(L, -1);
     }
 
-    /* If there are any keybindings. Grab them. */
     for(i = 0; strcmp(keybindNames[i], "end"); i++) {
       lua_getglobal(L, keybindNames[i]);
       str = NULL;
diff --git a/src/opengl.c b/src/opengl.c
index f27d18e..2ccf94b 100644
--- a/src/opengl.c
+++ b/src/opengl.c
@@ -872,6 +872,10 @@ int gl_init(void) {
 
   /* Set opengl flags. */
   SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); /* Ideally want double buffering. */
+  if(gl_has(OPENGL_FSAA)) {
+    SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
+    SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, gl_screen.fsaa);
+  }
   if(gl_has(OPENGL_VSYNC))
     SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);
 
@@ -890,7 +894,7 @@ int gl_init(void) {
       WARN("No fullscreen modes available");
       if(flags & SDL_FULLSCREEN) {
         WARN("Disabling fullscreen mode");
-        flags ^= SDL_FULLSCREEN;
+        flags &= ~SDL_FULLSCREEN;
       }
     }
     else if(modes == (SDL_Rect**)-1)
@@ -941,8 +945,16 @@ int gl_init(void) {
 
   /* Actually creating the screen. */
   if(SDL_SetVideoMode(SCREEN_W, SCREEN_H, gl_screen.depth, flags) == NULL) {
-    ERR("Unable to create OpenGL window: %s", SDL_GetError());
-    return -1;
+    if(gl_has(OPENGL_FSAA)) {
+      LOG("Disablin FSAA.");
+      gl_screen.flags &= ~OPENGL_FSAA;
+      SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
+      SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0);
+    }
+    if(SDL_SetVideoMode(SCREEN_W, SCREEN_H, gl_screen.depth, flags)==NULL) {
+      ERR("Unable to create OpenGL window: %s", SDL_GetError());
+      return -1;
+    }
   }
 
   /* Grab some info. */
diff --git a/src/opengl.h b/src/opengl.h
index 5da345f..94f0971 100644
--- a/src/opengl.h
+++ b/src/opengl.h
@@ -29,6 +29,7 @@
 #define OPENGL_FRAG_SHADER  (1<<6)    /**< Fragment shaders. */
 #define OPENGL_VERT_SHADER  (1<<7)    /**< Vertex shaders. */
 #define OPENGL_DIM_DEF      (1<<8)    /**< Dimensions specifically defined. */
+#define OPENGL_FSAA         (1<<9)    /**< Full screen Anti Aliasing. */
 #define gl_has(f)           (gl_screen.flags & (f)) /**< Check for the flag. */
 
 /**
@@ -47,6 +48,7 @@ typedef struct glInfo_ {
   int flags;        /**< Store different properties. */
   int tex_max;      /**< Max texture size. */
   int multitex_max; /**< Max multitexture levels. */
+  int fsaa;         /**< Full scene Anti-Aliasing level. */
 } glInfo;
 extern glInfo gl_screen; /* Local structure set with gl_init etc. */