Verify the throttles and make sure they go on horizontal. As mentioned, verify spark on all cylinders. If both check positive, the next step is to make sure your prop is not oversized for you boat and engine. And finally, do the spray test while running WOT in the water. This test requires two person. One will be driving while the other will be working at the engine.
Fill a sprayer bottle with fuel oil mix. Remove the cowl (engine off in the water), remove the air covers for the carbs. Start engine and make sure nothing lose in the boat can get sucked in to the engine. Next make sure you are clear of other boats and nav hazards. Slowly bring control throttle to WOT and watch RPM. If rpm reaches 5000~5500 RPM with the cowl off, you might have exhaust leak.
If RPM stays max at 3500, start spraying fuel mix into each cylinder while watching for increase or decrease in engine rpm. You will have to spray almost continuous into each cylinder to see the difference. A decrease indicates that cylinder and carb are working properly. It decreases in rpm when you spray fuel oil mix because it makes the air mixture too rich. An increase indicates that cylinder is either not firing or misfiring, meaning it is starving of fuel due to a faulty carburetor.
If there is no increase in rpm, it tells you all carbs and fuel delivery are working properly. So the likely source of low rpm is just either too much load on the prop or the motor timing is off. Make sure the WOT timing is set at 30 degrees static. For prop load, even with a correct size prop, you can inadvertently increase load on a prop if you the boat is not properly trimmed, meaning you are "plowing" into the water.