   This is wierd
  I am really tired, and I have already spent hours fixing stupid errors. (Its 1 o''clock where I am). I have a very early gui, and this bit of code isn''t acting right, so I need someone else to look at it. (I am only showing relevant parts)   //CWindow.cppvoid CWindow::Move(int x, int y){upXpos = x;upYpos = y;}void CWindow::Draw(){if(active){glBegin(GL_TRIANGLE_STRIP);glVertex2i(upXpos, upYpos);glVertex2i(upXpos + width, upYpos);glVertex2i(upXpos, upYpos + height);glVertex2i(upXpos + width, upYpos + height);glEnd();}}CWindow::CWindow(){upXpos = 320;upYpos = 240;width = 320;height = 240;border = true;resize = true;active = true;move = true;selected = true;minimized = false;}//main.cppif(SDL_Init(SDL_INIT_VIDEO))return 0;SDL_SetVideoMode(640, 480, 0, SDL_OPENGL | SDL_HWSURFACE);glViewport(0, 0, 640, 480);glOrtho(0, 640, 480, 0, -1.0f, 1.0);Window.Move(320, 240);Window.Draw();I create the window, and set everything up right. When I have upXpos set in the constructor, the window (or red square in my case) appears where it should. When I set it through the Move() function, it appears in the wrong area. Sorry my question is dumb, but I don''t want to waste another hour staring at my code till the answer smacks me in the face. 
  Where did those "upXpos" and "upYpos" functions come from? ;  Looks pretty ok to me. It''s probably something else. Are you doing glLoadIdentity() every frame? 