rotate object regardless of current orientation

I have an object that i pick up and hold out in front of the camera. I would like to be able to use the keyboard arrows to rotate the object forward/back(pitch), left/right(roll) but to it in relation to the direction I’m facing.

I have tried a few things but everything i try seems to just rotate the object about its axis.

[Update] this is the closest i have gotten:

transform.rotation = Quaternion.Slerp(transform.rotation,
      Quaternion.LookRotation(playerController.mainCamera.transform.forward,
      playerController.mainCamera.transform.up) *
      Quaternion.Euler(0.0f, rotateHorizontal, 0.0f) *
      Quaternion.Euler(rotateVertical, 0.0f, 0.0f), pickupSpeed * Time.deltaTime);

the horizontal works perfectly but the vertical is effected by the amount of horizontal rotation. I’m not sure how to pitch forward/backward regardless of the horizontal roll.

So after trying so many things. each thing I tried I attempted to just focus on one axis at a time. Finally I found out that this is what i wanted:

transform.RotateAround(transform.position, playerController.mainCamera.transform.up, rotateHorizontal);
transform.RotateAround(transform.position, playerController.mainCamera.transform.right, rotateVertical);

It allows me to rotate each axis independently in the directions i want ignoring the orientation of the object i’m rotating, but using the direction of the players camera as a reference.

transform.rotation = Quaternion.AngleAxis(rotateHorizontal* pickupSpeed * Time.deltaTime, Camera.main.transform.up) * Quaternion.AngleAxis(rotateVertical* pickupSpeed * Time.deltaTime, Camera.main.transform.right) * transform.rotation;

As you can see, it’s using the camera for the axis instead of the world or the target object