diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
index 1ece5a71b7e9663a379200262371e80948de8e4e..b5a2fa472988a77b8f13c0833b1c00c4fd9a4489 100644
--- a/cmake/modules/CMakeLists.txt
+++ b/cmake/modules/CMakeLists.txt
@@ -2,6 +2,7 @@ set(modules
   AddInputFileLinks.cmake
   CheckConstexpr.cmake
   CopyOfDuneSymlinkOrCopy.cmake
+  DumuxDoxygen.cmake
   DumuxMacros.cmake
   DumuxTestMacros.cmake)
 include(GNUInstallDirs)
diff --git a/cmake/modules/DumuxDoxygen.cmake b/cmake/modules/DumuxDoxygen.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..ae4a0fa9c8dcdf40a3fc0b2fbaa6979d273cf44f
--- /dev/null
+++ b/cmake/modules/DumuxDoxygen.cmake
@@ -0,0 +1,9 @@
+# add_dumux_doxgen_target
+#
+# make sure, that the doxygen links to todo list, bibliography, etc. are correct
+MACRO (add_dumux_doxygen_target)
+  add_doxygen_target()
+  add_custom_command(TARGET doxygen_${ProjectName}
+                     POST_BUILD
+                     COMMAND ${CMAKE_SOURCE_DIR}/doc/doxygen/sanitizelinks.sh)
+ENDMACRO (add_dumux_doxygen_target)
diff --git a/cmake/modules/DumuxMacros.cmake b/cmake/modules/DumuxMacros.cmake
index 2a3dc11f91ec7c370f3aedb3f3dba2747b9147d0..c8157f814613cf18477d7d76c4e5df9d8d21659c 100644
--- a/cmake/modules/DumuxMacros.cmake
+++ b/cmake/modules/DumuxMacros.cmake
@@ -2,6 +2,7 @@
 include(CheckConstexpr)
 # additional macros
 include(AddInputFileLinks)
+include(DumuxDoxygen)
 include(DumuxTestMacros)
 
 find_package(Gnuplot)
diff --git a/doc/doxygen/CMakeLists.txt b/doc/doxygen/CMakeLists.txt
index f7b8ea5c993424d9524394428ec8f2ca9160b66a..9f66c1ba47a600577308610f1d7ce17840c7fbdd 100644
--- a/doc/doxygen/CMakeLists.txt
+++ b/doc/doxygen/CMakeLists.txt
@@ -1,2 +1,2 @@
 # shortcut for creating the Doxyfile.in and Doxyfile
-add_doxygen_target()
+add_dumux_doxygen_target()
diff --git a/doc/doxygen/Doxylocal b/doc/doxygen/Doxylocal
index 6d851cb60f19ec790c37d81b6963e08e9ba04f89..4b9abcb5d36ad013f52ab082769aafedf059e392 100644
--- a/doc/doxygen/Doxylocal
+++ b/doc/doxygen/Doxylocal
@@ -24,8 +24,11 @@ EXTRA_PACKAGES        += amsmath,amssymb,units
 SEARCHENGINE           = YES
 SERVER_BASED_SEARCH    = NO
 
-# disable macro expansion (Otherwise, certain properties will not appear
-# in the documentation properly. This should be fixed at some time.)
-MACRO_EXPANSION = NO
-
-CITE_BIB_FILES = @top_srcdir@/doc/handbook/dumux-handbook
+# the bibliography file used for the doxygen documentation
+CITE_BIB_FILES = @top_srcdir@/doc/handbook/dumux-handbook.bib
+
+# enable macro expansion only for specified macros
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = YES
+PREDEFINED             = "DUNE_DEPRECATED:=/** \deprecated */" \
+                         "DUNE_DEPRECATED_MSG(A):=/** \deprecated A */"
diff --git a/doc/doxygen/sanitizelinks.sh b/doc/doxygen/sanitizelinks.sh
new file mode 100755
index 0000000000000000000000000000000000000000..afdd216f66c9310921d7ee747ea7213826857972
--- /dev/null
+++ b/doc/doxygen/sanitizelinks.sh
@@ -0,0 +1,12 @@
+# sanitizes the links to the given lists, because doxygen somehow links
+# to a page with a wrong index
+function sanitizelinks {
+  NEW_FILE=`grep -l "\"title\">$1" html/*html | egrep -o [0-9]+`
+  OLD_FILE=`awk -v a=$NEW_FILE 'BEGIN {printf("%05d", a-1)}'`
+  sed -i "s/$OLD_FILE/$NEW_FILE/g" html/*html
+}
+
+sanitizelinks "Todo List"
+sanitizelinks "Bug List"
+sanitizelinks "Deprecated List"
+sanitizelinks "Bibliography"