diff --git a/cmake/FindGRASS.cmake b/cmake/FindGRASS.cmake
index 061785739b6..43c20644142 100644
--- a/cmake/FindGRASS.cmake
+++ b/cmake/FindGRASS.cmake
@@ -66,7 +66,15 @@ ENDIF (WITH_GRASS)
IF (GRASS_FOUND)
FILE(READ ${GRASS_INCLUDE_DIR}/grass/version.h VERSIONFILE)
+ # We can avoid the following block using version_less version_equal and
+ # version_greater. Are there compatibility problems?
STRING(REGEX MATCH "[0-9]+\\.[0-9]+\\.[^ ]+" GRASS_VERSION ${VERSIONFILE})
+ STRING(REGEX REPLACE "^([0-9]*)\\.[0-9]*\\..*$" "\\1" GRASS_MAJOR_VERSION ${GRASS_VERSION})
+ STRING(REGEX REPLACE "^[0-9]*\\.([0-9]*)\\..*$" "\\1" GRASS_MINOR_VERSION ${GRASS_VERSION})
+ STRING(REGEX REPLACE "^[0-9]*\\.[0-9]*\\.(.*)$" "\\1" GRASS_MICRO_VERSION ${GRASS_VERSION})
+ # Add micro version too?
+ # How to numerize RC versions?
+ MATH( EXPR GRASS_NUM_VERSION "${GRASS_MAJOR_VERSION}*10000 + ${GRASS_MINOR_VERSION}*100")
IF (NOT GRASS_FIND_QUIETLY)
MESSAGE(STATUS "Found GRASS: ${GRASS_PREFIX} (${GRASS_VERSION})")
diff --git a/src/plugins/grass/CMakeLists.txt b/src/plugins/grass/CMakeLists.txt
index c337028dc24..2372850d0bc 100644
--- a/src/plugins/grass/CMakeLists.txt
+++ b/src/plugins/grass/CMakeLists.txt
@@ -1,5 +1,5 @@
-SUBDIRS(config modules scripts themes)
+SUBDIRS(config modules modules-old scripts themes)
ADD_DEFINITIONS(-DGRASS_BASE=\\\"${GRASS_PREFIX}\\\")
ADD_DEFINITIONS(-DHAVE_OPENPTY=${HAVE_OPENPTY})
diff --git a/src/plugins/grass/modules-old/CMakeLists.txt b/src/plugins/grass/modules-old/CMakeLists.txt
new file mode 100644
index 00000000000..b9a89a936d3
--- /dev/null
+++ b/src/plugins/grass/modules-old/CMakeLists.txt
@@ -0,0 +1,6 @@
+IF ( GRASS_NUM_VERSION LESS 60400 )
+ FILE (GLOB MODULE_FILES *.qgm *.svg *.png)
+ INSTALL (FILES ${MODULE_FILES}
+ DESTINATION ${QGIS_DATA_DIR}/grass/modules)
+ENDIF ( GRASS_NUM_VERSION LESS 60400 )
+
diff --git a/src/plugins/grass/modules-old/r.surf.fractal.1.png b/src/plugins/grass/modules-old/r.surf.fractal.1.png
new file mode 100644
index 00000000000..0b97c854521
Binary files /dev/null and b/src/plugins/grass/modules-old/r.surf.fractal.1.png differ
diff --git a/src/plugins/grass/modules-old/r.surf.fractal.2.png b/src/plugins/grass/modules-old/r.surf.fractal.2.png
new file mode 100644
index 00000000000..88eee41b891
Binary files /dev/null and b/src/plugins/grass/modules-old/r.surf.fractal.2.png differ
diff --git a/src/plugins/grass/modules-old/r.surf.fractal.qgm b/src/plugins/grass/modules-old/r.surf.fractal.qgm
new file mode 100644
index 00000000000..a6a9d060eab
--- /dev/null
+++ b/src/plugins/grass/modules-old/r.surf.fractal.qgm
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/plugins/grass/modules-old/v.buffer.1.svg b/src/plugins/grass/modules-old/v.buffer.1.svg
new file mode 100644
index 00000000000..106e67b1ed8
--- /dev/null
+++ b/src/plugins/grass/modules-old/v.buffer.1.svg
@@ -0,0 +1,13 @@
+
+
+
diff --git a/src/plugins/grass/modules-old/v.buffer.2.svg b/src/plugins/grass/modules-old/v.buffer.2.svg
new file mode 100644
index 00000000000..ceeb28c404a
--- /dev/null
+++ b/src/plugins/grass/modules-old/v.buffer.2.svg
@@ -0,0 +1,14 @@
+
+
+
diff --git a/src/plugins/grass/modules-old/v.buffer.qgm b/src/plugins/grass/modules-old/v.buffer.qgm
new file mode 100644
index 00000000000..19c519b4898
--- /dev/null
+++ b/src/plugins/grass/modules-old/v.buffer.qgm
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/plugins/grass/modules-old/v.db.select.1.png b/src/plugins/grass/modules-old/v.db.select.1.png
new file mode 100644
index 00000000000..1bbb187b374
Binary files /dev/null and b/src/plugins/grass/modules-old/v.db.select.1.png differ
diff --git a/src/plugins/grass/modules-old/v.db.select.2.png b/src/plugins/grass/modules-old/v.db.select.2.png
new file mode 100644
index 00000000000..406b509b35e
Binary files /dev/null and b/src/plugins/grass/modules-old/v.db.select.2.png differ
diff --git a/src/plugins/grass/modules-old/v.db.select.qgm b/src/plugins/grass/modules-old/v.db.select.qgm
new file mode 100644
index 00000000000..0c03829c887
--- /dev/null
+++ b/src/plugins/grass/modules-old/v.db.select.qgm
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/plugins/grass/modules-old/v.db.select.where.1.png b/src/plugins/grass/modules-old/v.db.select.where.1.png
new file mode 100644
index 00000000000..b32255646ac
Binary files /dev/null and b/src/plugins/grass/modules-old/v.db.select.where.1.png differ
diff --git a/src/plugins/grass/modules-old/v.db.select.where.2.png b/src/plugins/grass/modules-old/v.db.select.where.2.png
new file mode 100644
index 00000000000..bcea23c37d7
Binary files /dev/null and b/src/plugins/grass/modules-old/v.db.select.where.2.png differ
diff --git a/src/plugins/grass/modules-old/v.db.select.where.qgm b/src/plugins/grass/modules-old/v.db.select.where.qgm
new file mode 100644
index 00000000000..78dcc5082b2
--- /dev/null
+++ b/src/plugins/grass/modules-old/v.db.select.where.qgm
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/plugins/grass/modules-old/v.to.db.1.png b/src/plugins/grass/modules-old/v.to.db.1.png
new file mode 100644
index 00000000000..91a2cf2bb4a
Binary files /dev/null and b/src/plugins/grass/modules-old/v.to.db.1.png differ
diff --git a/src/plugins/grass/modules-old/v.to.db.2.png b/src/plugins/grass/modules-old/v.to.db.2.png
new file mode 100644
index 00000000000..66eee68e340
Binary files /dev/null and b/src/plugins/grass/modules-old/v.to.db.2.png differ
diff --git a/src/plugins/grass/modules-old/v.to.db.qgm b/src/plugins/grass/modules-old/v.to.db.qgm
new file mode 100644
index 00000000000..b73621d1a8d
--- /dev/null
+++ b/src/plugins/grass/modules-old/v.to.db.qgm
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/plugins/grass/modules/r.surf.fractal.qgm b/src/plugins/grass/modules/r.surf.fractal.qgm
index a6a9d060eab..77bd71f8eef 100644
--- a/src/plugins/grass/modules/r.surf.fractal.qgm
+++ b/src/plugins/grass/modules/r.surf.fractal.qgm
@@ -2,7 +2,7 @@
-
-
-
+
+
+
diff --git a/src/plugins/grass/modules/v.buffer.qgm b/src/plugins/grass/modules/v.buffer.qgm
index 19c519b4898..d3e18a50206 100644
--- a/src/plugins/grass/modules/v.buffer.qgm
+++ b/src/plugins/grass/modules/v.buffer.qgm
@@ -3,6 +3,6 @@
-
+
diff --git a/src/plugins/grass/modules/v.db.select.qgm b/src/plugins/grass/modules/v.db.select.qgm
index 0c03829c887..b7ac43c6756 100644
--- a/src/plugins/grass/modules/v.db.select.qgm
+++ b/src/plugins/grass/modules/v.db.select.qgm
@@ -3,6 +3,6 @@
-
+
diff --git a/src/plugins/grass/modules/v.db.select.where.qgm b/src/plugins/grass/modules/v.db.select.where.qgm
index 78dcc5082b2..19265ac006b 100644
--- a/src/plugins/grass/modules/v.db.select.where.qgm
+++ b/src/plugins/grass/modules/v.db.select.where.qgm
@@ -3,7 +3,7 @@
-
+
diff --git a/src/plugins/grass/modules/v.to.db.qgm b/src/plugins/grass/modules/v.to.db.qgm
index b73621d1a8d..625a956d91e 100644
--- a/src/plugins/grass/modules/v.to.db.qgm
+++ b/src/plugins/grass/modules/v.to.db.qgm
@@ -5,5 +5,5 @@
-
+