I nailed the problem down to the following:
In my engine, the rotation of an object is defined by 3 scalars: angle of rotation about the X axis, Y axis, and Z axis. To display the object, the rotations are applied in order:
glRotatef(rot[X], 1, 0, 0);
glRotatef(rot[Y], 0, 1, 0)...