Conduct these checks to see if the problem is with the gauge or the sender.
NOTE: These tests require disconnecting the gauge's sensing leg from the sender head. But, if the bed is installed and that makes the sender inaccessible, you can still do them. Trace the sender lead (tan I think) from the sender back towards the front of the truck. Locate a spot that will allow you to easily make a cut in the wire - and also splice it back together after you have fixed this. Try to make the cut in the wire as close as possible to the sender - to include as much of the sensing lead in the test as you can.
Disconnect the sensing leg from the terminal on the sender head (or cut the wire where accessible). Be sure the copper connection (or exposed conductors) can't come in contact with any ground point on the frame/body. Get out from under the truck - or have an assistant help- and turn the ignition switch to RUN. Observe the gas gauge (give it a few seconds) - it should quickly move to the far right position ("F").
Now check that the gauge can read the lower end of the scale. First make a good ground point on the frame - clean it right down to bright metal. Then either hold or clamp the terminal clip (or the cut and stripped wire) securely to the bright spot on the frame. While the wire is in good contact with the frame, have someone turn the key to RUN and check the gas gauge. This time, with a direct path to ground, the needle on the gauge should move all the way to the left ("E").
If the gauge reacts as described above for each test, you have isolated the problem to the sender or the sender's ground wire. However, in this case, you can disregard the sender ground lead. That's because the problem is: you are getting a lower than expected indication at the gauge. Since the lack of a ground in the sensing leg causes the gauge to read full high (and a poor ground causes a higher than expected reading), it is safe to assume that your ground is good. If it were bad, your gauge would be reading higher than expected.
That pretty much just leaves the sender assembly as the possible cause. Maybe the float isn't rising all the way up. Or the float is rising and the arm is moving but the wiper isn't making good contact with the variable resistor. You won't know until you pull the sender and inspect it. If you wanted to check the resistance across the sender; a GM sender for the years 1965-1997 has a variable resistance of 0-90 ohms. Meaning 0 ohms when the tank is empty and 90 ohms when full.