Why is the pullback (between affine varieties) of a quasi coherent sheaf quasi coherent? Let $\phi:A\to B$ be a ring homomorphism inducing $f :\operatorname{Spec}(B) \to \operatorname{Spec}(A)$ on spectra. Let $M$ be an $A$-module and $\widetilde{M}$ be the corresponding quasi coherent sheaf on $\operatorname{Spec}(A)$. 
I define the pullback of an $\mathcal{O}_A$ -module $\mathcal{F}$ to be
$$f^{*} \mathcal{F} = f^{-1}\mathcal{F} \otimes_{f^{-1}\mathcal{O}_A} \mathcal{O}_B$$
I want to show that $f^*\widetilde{M} \simeq \widetilde{M\otimes_A B}$. In Hartshorne it is said that this follows directly from definitions, however, the definition of the pullback involves taking limits, sheafifying, taking the tensor product and sheafifying again, so opening all of that doesn't seem so simple.
I know that the stalks of these two sheaves at $q\triangleleft B$ are equal to $M_{\phi^{-1}q} \otimes_{A_{\phi^{-1}q}} B_q$, since all of the relevant operations act nicely on stalks, so I am missing a map between the two sheaves that would induce identity on the stalks.
So I want to define an $f^{-1}\mathcal{O}_A$- bilinear map $f^{-1}\widetilde{M}\times\mathcal{O}_B \to \widetilde{M\otimes_A B}$, that it suffices to define on distinguished $D(g)\subset \operatorname{Spec}(B)$, but I don't see how to express $(f^{-1}\widetilde{M})(D(g))$ in a reasonable way, and in any case, I think that there should be a very simple proof because Hartshorne says this follows directly from definitions. 
I just don't have a good intuition on what is going on here.
 A: Here's one proof that doesn't get too far away from the basics. I'm not sure if it's exactly what Hartshorne had in mind, but it should be direct and not use anything too difficult.
Step 1: The pullback of the structure sheaf is the structure sheaf. This follows because $R\otimes_R -$ is isomorphic to the identity functor.
Step 2: Pullback is right-exact, because it is the composition of a right exact functor $-\otimes_{f^{-1}\mathcal{O}_Y}\mathcal{O}_X$ with the exact functor $f^{-1}(-)$. (If you need a reminder on why $f^{-1}(-)$ is exact, look at stalks.)
Step 3: Write $M$ as the cokernel of a map of free $A$-modules $A^{\oplus I}\stackrel{p}{\to} A^{\oplus J}\to M$. Take the associated sheaf to get $$\mathcal{O}_A^{\oplus I}\to \mathcal{O}_A^{\oplus J}\to \widetilde{M} \to 0.$$ Apply our right exact functor $f^*$ to get the exact sequence $$f^*\mathcal{O}_A^{\oplus I}\to f^*\mathcal{O}_A^{\oplus J}\to f^*\widetilde{M} \to 0$$ which simplifies to $$\mathcal{O}_B^{\oplus I}\to \mathcal{O}_B^{\oplus J}\to f^*\widetilde{M} \to 0$$ by step 1. Thus $f^*\widetilde{M}$ is quasi-coherent, and it's global sections are the cokernel of $B^{\oplus I}\to B^{\oplus J}$ where the map is $B\otimes_A p$ (this follows from writing $p$ as a matrix and noting that everything we do preserves this matrix). So the global sections of $f^*\widetilde{M}$ are exactly $M\otimes_A B$.
