Local Axis Rotation Problem

Hi. I have a 3d rotation problem that really shows up my lack
of 3d knowledge lol. I’m trying to move a camera around using
the arrow keys. Left-right arrow is supposed to rotate about
local camera z axis, and up-down around local x-axis. But
this code seems to rotate around the origin. Is it something
to do with the order of operations?
Any help greatly appreciated.

//=====================================================

	SwitchTo3D(WINDOW_WIDTH, WINDOW_HEIGHT);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

/// Load ship Position Matrix (camera)

	XFORM3D m;
	XForm3D_SetIdentity(&m);
	XForm3D_RotateZLocal(&m, Float_DegToRad(AngleZ));
	XForm3D_RotateXLocal(&m, Float_DegToRad(AngleX));
	XForm3D_SetTranslation(&m, Pos.x, Pos.y, Pos.z); 
	glLoadMatrixf((GLfloat *)&m);
	
	DrawPlanet(Pos);

//=====================================================

It’s difficult to say without knowing what is going on inside your XForm functions. At a guess I’d say you need to rotate the Pos.x/y/z values by the transpose(?) of the matrix you created in XFORM3D m.