Fitting stl file on 2D image

I used the code below and I wanted to match a 3D stl on an image:
both files are same size but when you open them in two renderer layers they dont match, I tried using pixel sizing to scale but it didnt work either.

        #STL file
        reader = vtk.vtkSTLReader()
        reader.SetFileName(filename1)
        reader.Update()

        self.transform = vtk.vtkTransform()
        #self.transform.Scale(0.25, 0.25, 0.25)

        center = vtk.vtkCenterOfMass()
        center.SetInputData(reader.GetOutput())
        center.SetUseScalarsAsWeights(False)
        center.Update()
        center_x, center_y, center_z = center.GetCenter()
        self.transform.Translate(-center_x, -center_y, -center_z)


        
        self.transformFilter = vtk.vtkTransformPolyDataFilter()
        self.transformFilter.SetTransform(self.transform)
        self.transformFilter.SetInputConnection(reader.GetOutputPort())
        self.transformFilter.Update()

        mapper = vtk.vtkPolyDataMapper()
        if vtk.VTK_MAJOR_VERSION <= 5:
            mapper.SetInput(self.transformFilter.GetOutput())
        else:
            mapper.SetInputConnection(self.transformFilter.GetOutputPort())

        self.actor = vtk.vtkActor()
        self.actor.SetMapper(mapper)

        
        #X ray File
        readerX = vtk.vtkDICOMImageReader()
        readerX.SetDirectoryName(pathDicomDir)
        readerX.Update()

        image_data = readerX.GetOutput()

        reslice = vtk.vtkImageReslice()
        reslice.SetInputConnection(readerX.GetOutputPort())

        # Create a greyscale lookup table
        table = vtk.vtkLookupTable()
        table.SetRange(0, 3000) # image intensity range
        table.SetValueRange(0, 1) # from black to white
        table.SetSaturationRange(0.0, 0.0) # no color saturation
        table.SetRampToLinear()
        table.Build()

        # Map the image through the lookup table
        color = vtk.vtkImageMapToColors()
        color.SetLookupTable(table)
        color.SetInputConnection(reslice.GetOutputPort())

        # Create an image actor to display the image
        actorX = vtk.vtkImageActor()
        actorX.GetMapper().SetInputConnection(color.GetOutputPort())

        self.background_renderer = vtk.vtkRenderer()
        self.scene_renderer = vtk.vtkRenderer()

        self.background_renderer.SetLayer(0)
        self.background_renderer.InteractiveOff()
        self.scene_renderer.SetLayer(1)

        

        origin = image_data.GetOrigin()
        spacing = image_data.GetSpacing()
        extent = image_data.GetExtent()

        camera = self.background_renderer.GetActiveCamera()
        camera.ParallelProjectionOn()

        xc = origin[0] + 0.5*(extent[0] + extent[1]) * spacing[0]
        yc = origin[1] + 0.5*(extent[2] + extent[3]) * spacing[1]
        xd = (extent[1] - extent[0] + 1) * spacing[0]
        yd = (extent[3] - extent[2] + 1) * spacing[1]
        d = camera.GetDistance()
        camera.SetParallelScale(0.5 * yd)
        camera.SetFocalPoint(xc, yc, 0.0)
        camera.SetPosition(xc, yc, d)


        
        
        self.vtkwidget = QVTKRenderWindowInteractor(self.centralwidget)
        self.gridLayout.addWidget(self.vtkwidget, 0, 0, 1, 1)
        


        self.vtkwidget.GetRenderWindow().AddRenderer(self.background_renderer)
        self.vtkwidget.GetRenderWindow().AddRenderer(self.scene_renderer)

        self.vtkwidget.GetRenderWindow().SetNumberOfLayers(2)
        
        self.iren = self.vtkwidget.GetRenderWindow().GetInteractor()
        self.iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballActor())

        self.background_renderer.AddActor(actorX)
        #self.scene_renderer.AddActor(self.actor)

        self.iren.Start()

stl file become too big that didnt let me give you a perfect photo. Is it camera problem or scaling?