When GPU_Camera is at (0, 0), the camera rotates and zooms correctly. However, when the camera is not at (0, 0), its rotation and zoom is anchored at (window_width / 2, window_height / 2). I was expecting that the camera will rotate and zoom around its new center point, (camera_x + (camera_viewport_width / 2), camera_y + (camera_viewport_height / 2)).
On that note, how do you rotate and zoom the camera around camera's current center point?