[step:Choose boundedness constants and Darboux partitions for $f$ and $g$]
If $a=b$, then $[a,b]=\{a\}$ and every [bounded function](/page/Bounded%20Function) on $[a,b]$ has zero upper-lower Darboux gap for the partition $\{a\}$. Hence $fg$ is Riemann integrable on $[a,b]$ by the Darboux criterion. For the rest of the proof, assume $a<b$.
Because $f$ and $g$ are Riemann integrable on $[a,b]$, both functions are bounded. Define constants $A,B \in [0,\infty)$ by
\begin{align*}
A := \sup_{x \in [a,b]} |f(x)|
\end{align*}
and
\begin{align*}
B := \sup_{x \in [a,b]} |g(x)|.
\end{align*}
For a bounded function $h: [a,b] \to \mathbb{R}$ and a partition $Q=\{q_0,q_1,\dots,q_m\}$ with $a=q_0<q_1<\cdots<q_m=b$, define the upper and lower Darboux sums by
\begin{align*}
U(h,Q) := \sum_{j=1}^{m}\left(\sup_{x \in [q_{j-1},q_j]} h(x)\right)(q_j-q_{j-1})
\end{align*}
and
\begin{align*}
L(h,Q) := \sum_{j=1}^{m}\left(\inf_{x \in [q_{j-1},q_j]} h(x)\right)(q_j-q_{j-1}).
\end{align*}
Let $\varepsilon > 0$. By the Darboux criterion for Riemann integrability, there are partitions $P_f$ and $P_g$ of $[a,b]$ such that
\begin{align*}
U(f,P_f)-L(f,P_f) < \frac{\varepsilon}{2(B+1)}
\end{align*}
and
\begin{align*}
U(g,P_g)-L(g,P_g) < \frac{\varepsilon}{2(A+1)}.
\end{align*}
Let $P$ be the common refinement obtained by taking the union of the partition points of $P_f$ and $P_g$. Refinement decreases upper Darboux sums and increases lower Darboux sums, so
\begin{align*}
U(f,P)-L(f,P) \leq U(f,P_f)-L(f,P_f) < \frac{\varepsilon}{2(B+1)}
\end{align*}
and
\begin{align*}
U(g,P)-L(g,P) \leq U(g,P_g)-L(g,P_g) < \frac{\varepsilon}{2(A+1)}.
\end{align*}
[/step]