Index: src/win/wwindow.c
===================================================================
--- src/win/wwindow.c	(revision 15046)
+++ src/win/wwindow.c	(working copy)
@@ -139,7 +139,7 @@
    bool center = false;
    ALLEGRO_DISPLAY_WIN *win_display = (ALLEGRO_DISPLAY_WIN *)display;
    WINDOWINFO wi;
-   int bw, bh;
+   int lsize, rsize, tsize, bsize; // left, right, top, bottom border sizes
 
    wi.cbSize = sizeof(WINDOWINFO);
 
@@ -159,12 +159,13 @@
    }
 
    al_get_new_window_position(&pos_x, &pos_y);
-   if (pos_x == INT_MAX) {
-   	pos_x = pos_y = 0;
-      if (!(flags & ALLEGRO_FULLSCREEN)) {
-         center = true;
-      }
+   if ((flags & ALLEGRO_FULLSCREEN) || (flags & ALLEGRO_FULLSCREEN_WINDOW)) {
+      pos_x = pos_y = 0;
    }
+   else if (pos_x == INT_MAX) {
+      pos_x = pos_y = 0;
+      center = true;
+   }
 
    if (center) {
       _al_win_get_window_center(win_display, width, height, &pos_x, &pos_y);
@@ -180,21 +181,23 @@
 
    GetWindowInfo(my_window, &wi);
 
-   bw = (wi.rcClient.left - wi.rcWindow.left) + (wi.rcWindow.right - wi.rcClient.right),
-   bh = (wi.rcClient.top - wi.rcWindow.top) + (wi.rcWindow.bottom - wi.rcClient.bottom),
+   lsize = (wi.rcClient.left - wi.rcWindow.left);
+   tsize = (wi.rcClient.top - wi.rcWindow.top);
+   rsize = (wi.rcWindow.right - wi.rcClient.right);
+   bsize = (wi.rcWindow.bottom - wi.rcClient.bottom);
 
    SetWindowPos(my_window, 0, 0, 0,
-      width+bw,
-      height+bh,
+      width+lsize+rsize,
+      height+tsize+bsize,
       SWP_NOZORDER | SWP_NOMOVE);
-   SetWindowPos(my_window, 0, pos_x-bw/2, pos_y-bh/2,
+   SetWindowPos(my_window, 0, pos_x-lsize, pos_y-tsize,
       0, 0,
       SWP_NOZORDER | SWP_NOSIZE);
 
    if (flags & ALLEGRO_NOFRAME) {
       SetWindowLong(my_window, GWL_STYLE, WS_VISIBLE);
       SetWindowLong(my_window, GWL_EXSTYLE, WS_EX_APPWINDOW);
-      SetWindowPos(my_window, 0, 0, 0, width, height, SWP_NOMOVE | SWP_NOZORDER | SWP_FRAMECHANGED);
+      SetWindowPos(my_window, 0, pos_x, pos_y, width, height, SWP_NOZORDER | SWP_FRAMECHANGED);
    }
 
    ShowWindow(my_window, SW_SHOW);
Index: src/win/wgl_disp.c
===================================================================
--- src/win/wgl_disp.c	(revision 15046)
+++ src/win/wgl_disp.c	(working copy)
@@ -1214,7 +1214,8 @@
    }
 
    /* FIXME: can't _al_win_create_window() do this? */
-   if (disp->flags & ALLEGRO_FULLSCREEN) {
+   if ((disp->flags & ALLEGRO_FULLSCREEN) ||
+         (disp->flags & ALLEGRO_FULLSCREEN_WINDOW)) {
       RECT rect;
       rect.left = 0;
       rect.right = disp->w;
