Hi Albert,
I would be careful with the use of the term "incorrect". One has to make proper assumption to enable Mathematica to do cancelations. Try this:
ClearAll["Global`*"]
$Assumptions = {n >= 0, n \[Element] Integers};
origExpr = ((a + b x)^m (c + d x)^n)/(e + f x)^(m + n + 2);
iexpr = Integrate[origExpr, x];
dexpr = D[iexpr, x] // Simplify;
dexpr === origExpr
(* Out: True *)
Regards -- Henrik
PS.: I hope this is not one of those cases you count as "Mathematica fails" on your website ...