The first thing to realize is that limits do not always exist while limsups always do. Additionally, you seem to be confusing little-o and big-O.
In your case, you suggest to translate the fact that $f(x)=O(g(x)$ when $x\to\infty$ by the property $$\forall M,\ \exists X,\ \forall x,\ x\geqslant X\implies|f(x)|<M\,|g(x)|\tag{0}$$ but (0) roughly corresponds to the little-o property $f(x)=o(g(x))$ when $x\to\infty$ and not at all to some big-O property. A more accurate translation of the big-O property $f(x)=O(g(x))$ when $x\to\infty$ would be $$\exists M,\ \exists X,\ \forall x,\ x\geqslant X\implies|f(x)|<M\,|g(x)|\tag{1}$$ but (1) is not yet correct, as we explain below. Before that, note that you also consider the property $$\limsup\left|\frac{f(x)}{g(x)}\right|<M\tag{2}$$ It happens that (1) and (2) are almost equivalent in the sense that $$(2) \implies (4) \implies (3)$$ where (3) is very similar to (2) and (4) is very similar to (1), namely, $$\limsup\left|\frac{f(x)}{g(x)}\right|\leqslant M\tag{3}$$ and $$\exists X,\ \forall x,\ x\geqslant X\implies\left|\frac{f(x)}{g(x)}\right|\leqslant M\tag{4}$$
To understand why (1) is not a completely accurate characterization of the big-O property $f(x)=O(g(x))$ when $x\to\infty$, consider for example, $$f(x)=g(x)=\sin x$$
Then $f(x)=O(g(x))$ when $x\to\infty$ but (1) fails since $|f(x)|=|g(x)|=0$ for every $x$ in $\pi\mathbb Z$.
To conclude, the correct translation of the property that $f(x)=O(g(x))$ when $x\to\infty$ is $$\exists M,\ \exists X,\ \forall x,\ x\geqslant X\implies|f(x)|\leqslant M\,|g(x)|\tag{5}$$