diff --git a/AUTHORS.txt b/AUTHORS.txt
index e0ae79c..b25ef5e 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -1,42 +1,46 @@
-
-projectM -- Milkdrop-esque visualisation SDK
-Copyright (C)2003-2007 projectM Team
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-See 'LICENSE.txt' included within this release
-
-For the purposes of the copyright statement in the preamble of each source
-code file comprising projectM, the projectM team are:
-
-Carmelo Piccione
-    Parser
-    Evaluator
-    Pulse Audio support (projectM-pulseaudio)
-    Qt GUI (projectM-qt)
-	
-Peter Sperl
-    Beat Detection
-    Rendering
-    XMMS Support (projectM-xmms)
-    libvisual Support (projectM-libvisual)   
-
-Alligator Descartes
-    Media Player Support (iTunes, Winamp, Windows Media Player)
-    Test application frameworks (projectM-wxvis, projectM-sdlvis)
-    DVD application (projectM-movie)
-    Win32 screensaver (projectM-screensaver)
-
-Roger Dannenburg
-    Advice & Support
+projectM -- Milkdrop-esque visualisation SDK
+Copyright (C)2003-2007 projectM Team
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+See 'LICENSE.txt' included within this release
+
+For the purposes of the copyright statement in the preamble of each source
+code file comprising projectM, the projectM team are:
+
+Carmelo Piccione
+    Parser
+    Evaluator
+    Pulse Audio support (projectM-pulseaudio)
+    Qt GUI (projectM-qt)
+
+Peter Sperl
+    Beat Detection
+    Rendering
+    XMMS Support (projectM-xmms)
+    libvisual Support (projectM-libvisual)
+
+Alligator Descartes
+    Media Player Support (iTunes, Winamp, Windows Media Player)
+    Test application frameworks (projectM-wxvis, projectM-sdlvis)
+    DVD application (projectM-movie)
+    Win32 screensaver (projectM-screensaver)
+
+Roger Dannenburg
+    Advice & Support
+
+Matthias Klumpp
+    CMake build system
+    Distro integration
+    Bug fixes
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dcda29d..634b82f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,11 +1,5 @@
 PROJECT(projectM-complete)
-cmake_minimum_required(VERSION 2.4.0)
-cmake_policy(SET CMP0005 OLD)
-
-if(COMMAND cmake_policy)
-       cmake_policy(SET CMP0003 NEW)
-endif(COMMAND cmake_policy)
-
+cmake_minimum_required(VERSION 2.8.0)
 
 include(src/cmake/CPack-projectM.cmake)
 
diff --git a/src/libprojectM/CMakeLists.txt b/src/libprojectM/CMakeLists.txt
index 7680ce8..c3dae7a 100644
--- a/src/libprojectM/CMakeLists.txt
+++ b/src/libprojectM/CMakeLists.txt
@@ -31,16 +31,10 @@
 set(PROJECTM_ABI_LEVEL 2)
 #
 
-SET(LIB_SUFFIX ""
-  CACHE STRING "Define suffix of directory name (32/64)"
-  FORCE)
-
-ADD_DEFINITIONS(-DLIB_SUFFIX="\\\"${LIB_SUFFIX}\\\"")
-
 ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"")
 
-SET(LIB_INSTALL_DIR "\${exec_prefix}/lib${LIB_SUFFIX}"
-  CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})"
+SET(LIB_INSTALL_DIR "\${exec_prefix}/lib"
+  CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib)"
   FORCE)
 
 ADD_DEFINITIONS(-DSINGLE_PROCESS)
@@ -210,14 +204,26 @@
 	)
 endif(BUILD_PROJECTM_STATIC)
 
+SET(projectM_FONT_MENU "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" CACHE FILEPATH "Path to the default menu TrueType font")
+SET(projectM_FONT_TITLE "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" CACHE FILEPATH "Path to the default title TrueType font")
+ADD_DEFINITIONS(-DprojectM_FONT_MENU="\\\"${projectM_FONT_MENU}\\\"")
+ADD_DEFINITIONS(-DprojectM_FONT_TITLE="\\\"${projectM_FONT_TITLE}\\\"")
 
 CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libprojectM.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc" @ONLY)
 CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.inp.in" "${CMAKE_CURRENT_BINARY_DIR}/config.inp" @ONLY)
 
+IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf")
+	INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/VeraMono.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts)
+ENDIF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf")
+
+IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf")
+	INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/VeraMono.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts)
+ENDIF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf")
+
 FILE(GLOB presets "presets/*.milk" "presets/*.prjm" "presets/*.tga")
 INSTALL(FILES ${presets} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/presets)
 INSTALL(FILES ${Renderer_SOURCE_DIR}/projectM.cg ${Renderer_SOURCE_DIR}/blur.cg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/shaders)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.inp DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM)
 INSTALL(FILES projectM.hpp event.h dlldefs.h fatal.h PCM.hpp Common.hpp DESTINATION include/libprojectM)
-INSTALL(TARGETS projectM DESTINATION lib${LIB_SUFFIX})
+INSTALL(TARGETS projectM DESTINATION lib)
diff --git a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
index a539154..0835f97 100644
--- a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
+++ b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
@@ -118,7 +118,8 @@
     return PROJECTM_ERROR;
   if (load_builtin_func ("fact", FuncWrappers::fact_wrapper, 1) < 0)
     return PROJECTM_ERROR;
-
+  if (load_builtin_func("print", FuncWrappers::print_wrapper, 1) < 0)
+      return PROJECTM_ERROR;
   return PROJECTM_SUCCESS;
 }
 
diff --git a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
index 777eb5c..d74c166 100644
--- a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
+++ b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
@@ -103,6 +103,7 @@
 {
   if ((int)arg_list[0] == 0)
     return arg_list[2];
+  //std::cout <<"NOT ZERO: " << arg_list[0] << std::endl;
   return arg_list[1];
 }
 
@@ -142,11 +143,8 @@
 static float
 sin_wrapper(float * arg_list)
 {
-  assert(arg_list);
-  //return .5;
-  float d = sinf(*arg_list);
+  const float d = sinf(*arg_list);
   return d;
-  //return (sin (arg_list[0]));
 }
 
 
@@ -224,6 +222,27 @@
 
 
 static inline float
+print_wrapper(float * arg_list)
+{
+  int len  = 1;
+
+  for (int i = 0;  i < len;  i++)
+  {
+    std::cout << arg_list[i];
+    if (i != (len - 1))
+      std::cout << " ";
+  }
+
+  if (len > 0)
+    std::cout << std::endl;
+
+  if (len > 0)
+    return arg_list[0];
+  else
+    return 0;
+}
+
+static inline float
 nchoosek_wrapper(float * arg_list)
 {
   unsigned long cnm = 1UL;
diff --git a/src/libprojectM/MilkdropPresetFactory/Expr.cpp b/src/libprojectM/MilkdropPresetFactory/Expr.cpp
index 877fc12..92e5985 100644
--- a/src/libprojectM/MilkdropPresetFactory/Expr.cpp
+++ b/src/libprojectM/MilkdropPresetFactory/Expr.cpp
@@ -27,13 +27,14 @@
 #include <iostream>
 #include "Eval.hpp"
 
-
 float
 GenExpr::eval_gen_expr ( int mesh_i, int mesh_j )
 {
   float l;
 
-  assert ( item );
+  if (item == 0)
+    return EVAL_ERROR;
+
   switch ( this->type )
   {
   case VAL_T:
diff --git a/src/libprojectM/Renderer/Renderer.cpp b/src/libprojectM/Renderer/Renderer.cpp
index 78c1501..41662d5 100644
--- a/src/libprojectM/Renderer/Renderer.cpp
+++ b/src/libprojectM/Renderer/Renderer.cpp
@@ -7,6 +7,7 @@
 #include "TextureManager.hpp"
 #include <iostream>
 #include <algorithm>
+#include <sys/stat.h>
 #include <cassert>
 #include "omptl/omptl"
 #include "omptl/omptl_algorithm"
@@ -61,7 +62,17 @@
   this->beatDetect = beatDetect;
 
 #ifdef USE_FTGL
-  /**f Load the standard fonts */
+  /** Load the standard fonts if they do exist */
+  struct stat buffer;
+
+  if (stat( title_fontURL.c_str(), &buffer )) {
+    std::cout << "Could not open font file: " << title_fontURL << std::endl;
+    exit(1);
+  }
+  if (stat( menu_fontURL.c_str(), &buffer )) {
+    std::cout << "Could not open font file: " << menu_fontURL << std::endl;
+    exit(1);
+  }
 
   title_font = new FTGLPixmapFont(title_fontURL.c_str());
   other_font = new FTGLPixmapFont(menu_fontURL.c_str());
@@ -82,6 +93,7 @@
     poly_font->Depth(20);
     poly_font->FaceSize(72);
   }
+
 #endif /** USE_FTGL */
 
 
@@ -275,6 +287,17 @@
 Renderer::RenderFrame(const Pipeline &pipeline, const PipelineContext &pipelineContext)
 {
 
+#ifdef USE_FBO
+  // when not 'renderToTexture', the user may use its own couple FBO/texture
+  // so retrieve this external FBO if it exists, (0 means no FBO) and unbind it
+  GLint externalFBO = 0;
+  if (!renderTarget->renderToTexture)
+  {
+    glGetIntegerv(GL_FRAMEBUFFER_BINDING, &externalFBO);
+    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+  }
+#endif
+
   SetupPass1(pipeline, pipelineContext);
 
 #ifdef USE_CG
@@ -287,6 +310,15 @@
 
   RenderItems(pipeline, pipelineContext);
   FinishPass1();
+
+#ifdef USE_FBO
+  // when not 'renderToTexture', the user may use its own couple FBO/texture
+  // if it exists (0 means no external FBO)
+  // then rebind it just before calling the final pass: Pass2
+  if (!renderTarget->renderToTexture && externalFBO != 0)
+    glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, externalFBO);
+#endif
+
   Pass2(pipeline, pipelineContext);
 }
 
diff --git a/src/libprojectM/config.inp.in b/src/libprojectM/config.inp.in
index 7cf9697..dcf9cf1 100644
--- a/src/libprojectM/config.inp.in
+++ b/src/libprojectM/config.inp.in
@@ -17,5 +17,5 @@
 Aspect Correction = true	# Custom Shape Aspect Correction
 
 Preset Path = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/presets # preset location
-Title Font = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/fonts/Vera.ttf
-Menu Font = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/fonts/VeraMono.ttf
+Title Font = @projectM_FONT_TITLE@
+Menu Font = @projectM_FONT_MENU@
diff --git a/src/libprojectM/libprojectM.pc.in b/src/libprojectM/libprojectM.pc.in
index 2a1fa2b..90de752 100644
--- a/src/libprojectM/libprojectM.pc.in
+++ b/src/libprojectM/libprojectM.pc.in
@@ -6,7 +6,7 @@
 sysconfdir=@CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@
 
 Name: libprojectM
-Version: 2.0.0
+Version: @PROJECTM_VERSION@
 Description: projectM - OpenGL Milkdrop
 Requires:
 Libs: -L${libdir} -lprojectM
diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp
index 147e078..952035f 100644
--- a/src/libprojectM/projectM.cpp
+++ b/src/libprojectM/projectM.cpp
@@ -220,16 +220,16 @@
 
 #ifdef LINUX
   _settings.titleFontURL = config.read<string>
-      ("Title Font", CMAKE_INSTALL_PREFIX  "/share/projectM/fonts/Vera.ttf");
+      ("Title Font", projectM_FONT_TITLE);
   _settings.menuFontURL = config.read<string>
-      ("Menu Font", CMAKE_INSTALL_PREFIX  "/share/projectM/fonts/VeraMono.ttf");
+      ("Menu Font", projectM_FONT_MENU);
 #endif
 
 #ifdef WIN32
   _settings.titleFontURL = config.read<string>
-      ("Title Font", CMAKE_INSTALL_PREFIX  "/share/projectM/fonts/Vera.ttf");
+      ("Title Font", projectM_FONT_TITLE);
   _settings.menuFontURL = config.read<string>
-      ("Menu Font", CMAKE_INSTALL_PREFIX  "/share/projectM/fonts/VeraMono.ttf");
+      ("Menu Font", projectM_FONT_MENU);
 #endif
 
 
diff --git a/src/projectM-libvisual/CMakeLists.txt b/src/projectM-libvisual/CMakeLists.txt
index ed2f576..28d8f90 100644
--- a/src/projectM-libvisual/CMakeLists.txt
+++ b/src/projectM-libvisual/CMakeLists.txt
@@ -1,19 +1,13 @@
 PROJECT(projectM_libvisual)
 cmake_minimum_required(VERSION 2.4.0)
-    if(COMMAND cmake_policy)
-      cmake_policy(SET CMP0003 NEW)
-    endif(COMMAND cmake_policy)
-
 
 INCLUDE(cmake/CPack-projectM.cmake)
 
-
 ADD_LIBRARY(projectM_libvisual SHARED actor_projectM.cpp lvtoprojectM.h ConfigFile.h ConfigFile.cpp)
 
 INCLUDE(FindPkgConfig.cmake)
 cmake_policy(SET CMP0005 OLD)
 
-
 FIND_PACKAGE(OpenGL)
 FIND_PACKAGE(SDL)
 
@@ -30,19 +24,18 @@
 pkg_search_module(LIBVISUAL REQUIRED libvisual-0.4)
 
 if (LIBPROJECTM_FOUND)
-MESSAGE (STATUS "[projectM-libvisual] projectM detected.")
+	MESSAGE (STATUS "[projectM-libvisual] projectM detected.")
 else(LIBPROJECTM_FOUND)
-MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
+	MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
 endif(LIBPROJECTM_FOUND)
 
 if(LIBVISUAL_FOUND)
-MESSAGE(STATUS "[projectM-libvisual] libvisual detected.")
+	MESSAGE(STATUS "[projectM-libvisual] libvisual detected.")
 else(LIBVISUAL_FOUND)
-MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.")
+	MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.")
 endif(LIBVISUAL_FOUND)
 
 
-
 if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
    set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/libprojectM)
    set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/libprojectM)
diff --git a/src/projectM-pulseaudio/CMakeLists.txt b/src/projectM-pulseaudio/CMakeLists.txt
index 5f3e23b..2adc907 100644
--- a/src/projectM-pulseaudio/CMakeLists.txt
+++ b/src/projectM-pulseaudio/CMakeLists.txt
@@ -57,8 +57,8 @@
   message(STATUS "FTGL_LIBRARY_DIRS = ${FTGL_LIBRARY_DIRS}")
   include_directories(${FTGL_INCLUDE_DIRS})
   link_directories(${FTGL_LIBRARY_DIRS})
-else (FTGL_FOUND)
-  message(FATAL_ERROR "ERROR: ftgl library not detected. Please install it from ftgl.wiki.sourceforge.net")
+else (FTGL_FOUND USE)
+##  message(FATAL_ERROR "ERROR: ftgl library not detected. Please install it from ftgl.wiki.sourceforge.net")
 endif (FTGL_FOUND)
 
 set(projectM_pulseaudio_SRCS
diff --git a/src/projectM-qt/CMakeLists.txt b/src/projectM-qt/CMakeLists.txt
index e73ab52..750d1ed 100644
--- a/src/projectM-qt/CMakeLists.txt
+++ b/src/projectM-qt/CMakeLists.txt
@@ -8,11 +8,11 @@
 include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
 
 include(FindPkgConfig.cmake)
-if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
+if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
 	set(LIBPROJECTM_FOUND true)
-else(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
+else(${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
 	pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
-endif(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
+endif(${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
 
 OPTION(BUILD_PROJECTM_QT_STATIC "Build a static library of projectM-qt rather than the usual shared library format" OFF)
 
@@ -116,8 +116,8 @@
 SET_TARGET_PROPERTIES(projectM-qt PROPERTIES VERSION ${PROJECTM_QT_VERSION} SOVERSION ${PROJECTM_QT_ABI_LEVEL})
 
 if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
-   set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/libprojectM)
-   set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/libprojectM)
+   set(PROJECTM_INCLUDE ${projectM-complete_SOURCE_DIR}/libprojectM)
+   set(PROJECTM_LINK ${projectM-complete_BINARY_DIR}/libprojectM)
 elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
    set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM)
    set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
@@ -131,6 +131,6 @@
 target_link_libraries(projectM-qt projectM GLEW GL ${QT_QTGUI_LIBRARIES} ${QT_QTOPENGL_LIBRARIES} ${QT_QTXML_LIBRARIES} ${QT_LIBRARIES})
 
 install(FILES qprojectm_mainwindow.hpp DESTINATION include/libprojectM-qt)
-install(TARGETS projectM-qt DESTINATION lib${LIB_SUFFIX})
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig)
+install(TARGETS projectM-qt DESTINATION lib)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION lib/pkgconfig)
 install(FILES "images/icons/prjm16-transparent.svg" DESTINATION	${CMAKE_INSTALL_PREFIX}/share/pixmaps)
diff --git a/src/projectM-xmms/CMakeLists.txt b/src/projectM-xmms/CMakeLists.txt
index 453e3ca..4688f48 100644
--- a/src/projectM-xmms/CMakeLists.txt
+++ b/src/projectM-xmms/CMakeLists.txt
@@ -44,4 +44,4 @@
 
 TARGET_LINK_LIBRARIES(xmms_projectM projectM xmms ${SDL_LIBRARY} ${GTK_LIBRARIES})
 
-INSTALL(TARGETS xmms_projectM DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/xmms/Visualization )
+INSTALL(TARGETS xmms_projectM DESTINATION lib/xmms/Visualization )
