Not to take anything away from the accepted answer (or the others) I think it's important to mention how to go about fixing the problem although the original question was concerning what's causing the problem.
Looking at the photos in the original post (especially the second one) seems to show that the saw blade is not square to the rest of the table saw. The distance between the teeth and the sides of the throat plate cut-out are plainly not the same at both ends of the blade.
By setting the blade and the fence to the common reference point of the miter slot, you will have your saw dialed-in to a specific "landmark" and close to the precision limits of the machine. That miter slot is never going to move so it makes a good "zero" to calibrate everything else from. This should eliminate this problem and other similar ones.
You can do this (both moves, actually) by eye, but you'll get better results using a gauge like this, for example. Using a gauge like this allows you to measure from the center of the miter slot rather than the walls of the slot. I doubt that both walls of most miter slots are exactly parallel along their length.
What you need to do to correct this:
1. Set the arbor/blade square to the miter slot on the saw table.
Specifically the miter slot on the right side of the blade. Adjusting this usually entails loosening some bolts on the bottom surface of the saw table and "tapping" the trunnion mounts one way or another to move the heel of the saw blade to the right or left and bring it in line with the miter slot.
There are aftermarket attachments that you can get to dial this trunnion adjustment in, but they can be kind of tricky on some saws or not available for others. Here's a video of a guy showing how to make this adjustment on a saw similar to yours.
A couple of points: Use a "regular" blade (not the dado stack) and measure from the flat part of a single tooth (not the carbide tip) to cancel out any deformity in the blade itself. Get this as accurate as you can but a couple of thousandths of an inch are probably as good as it gets.
2. Set the fence square to the same miter slot.
Measure the distance from the front of the fence to the miter slot and the rear of the fence to the miter slot. Depending on your particular fence, shim/adjust to make these measurements match or nearly match.
Many people will intentionally set the trailing edge of their fence a couple thousandths away from the blade to prevent kick-back. I don't know if that's entirely valid, but it makes sense. If you're going to have it slightly out, it would be better to have it open up after the blade instead of narrowing against the blade. (I'm sure there's lively discussion on this topic elsewhere here....)
Next steps could very well be to look into a replacement/upgrade to the fence system. I haven't used the saw you have, so I don't know how good the fence is. The problem with lower-end, factory fences is that they are not terribly "repeatable". In a nut-shell, there's too much difference between one cut and the next that are supposed to be the same.
There are many after-market, and plans for "DIY" fences, that you can replace the stock fence with and see vastly improved precision and ease of use. Problem is, building a DIY fence is at the mercy of the existing fence... so you may end up having to make multiple homemade fences as the accuracy improves.
The saw I use most is a 30+ year old Craftsman contractor saw which someone gave me to get rid of. After tuning and aligning it using these steps, I can make repeatable cuts within about .005" accuracy... which seems to be good enough for what I'm doing.