Zoom without scaling

Thanks for the reply.

The code in the post quoted above is basically just the scaling part. In the full implementation by Paolo in gammaray, the actor is destroyed and recreated during handling of the left button up event:

void v3dMouseInteractor::OnLeftButtonUp()
{
    // Don't pick during dragging.
    if( ! m_isDragging ){

        //Remove the marker actor anyway.
        if( m_pickMarkerActor ) {
            this->GetDefaultRenderer()->RemoveActor( m_pickMarkerActor );
            m_pickMarkerActor = nullptr;
        }

 // ...

                    // (Re)create an actor for the pick marker.
                    m_pickMarkerActor = vtkSmartPointer<vtkActor>::New();
                    m_pickMarkerActor->GetProperty()->SetColor(1.0, 0.0, 0.0);
                    m_pickMarkerActor->SetPosition( pos );
                    m_pickMarkerActor->SetMapper(mapper);

                    // Adds the pick marker to the scene.
                    this->GetDefaultRenderer()->AddActor( m_pickMarkerActor );

                    // Rescale the actor so it stays with a constant size with respect to the canvas
                    // independently of zoom.
                    rescalePickMarkerActor();
                }
// ...

But yes, you are correct that I can do what I need with a permanent actor. In the code mentioned, the actor is needed only during the pick operation, so it makes sense to destroy it when no longer needed.