Coin::Coin(const Vector& pos, TileMap* tilemap)
   : MovingSprite(pos, "images/objects/coin/coin.sprite", LAYER_OBJECTS - 1, COLGROUP_TOUCHABLE),
-    path(boost::shared_ptr<Path>(tilemap->get_path())),
-    walker(boost::shared_ptr<PathWalker>(tilemap->get_walker())),
+    path(std::shared_ptr<Path>(tilemap->get_path())),
+    walker(std::shared_ptr<PathWalker>(tilemap->get_walker())),
     offset(),
     from_tilemap(true),
     physic()
 
   virtual void update(float elapsed_time);
 
 private:
-  boost::shared_ptr<Path> path;
-  boost::shared_ptr<PathWalker> walker;
+  std::shared_ptr<Path> path;
+  std::shared_ptr<PathWalker> walker;
   Vector offset;
   bool from_tilemap;
   Physic physic;
 
 #ifndef HEADER_SUPERTUX_OBJECT_TILEMAP_HPP
 #define HEADER_SUPERTUX_OBJECT_TILEMAP_HPP
 
-#include <boost/shared_ptr.hpp>
-
 #include "object/path_walker.hpp"
 #include "supertux/game_object.hpp"
 #include "supertux/script_interface.hpp"
     }
   }
 
-  boost::shared_ptr<Path> get_path()
+  std::shared_ptr<Path> get_path()
   { return path; }
 
-  boost::shared_ptr<PathWalker> get_walker()
+  std::shared_ptr<PathWalker> get_walker()
   { return walker; }
 
   void set_offset(const Vector &offset_)
   float current_alpha; /**< current tilemap opacity */
   float remaining_fade_time; /**< seconds until requested tilemap opacity is reached */
 
-  boost::shared_ptr<Path> path;
-  boost::shared_ptr<PathWalker> walker;
+  std::shared_ptr<Path> path;
+  std::shared_ptr<PathWalker> walker;
 
   DrawingContext::Target draw_target; /**< set to LIGHTMAP to draw to lightmap */
 
 
 #ifndef HEADER_SUPERTUX_SPRITE_SPRITE_PTR_HPP
 #define HEADER_SUPERTUX_SPRITE_SPRITE_PTR_HPP
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 class Sprite;
 
-typedef boost::shared_ptr<Sprite> SpritePtr;
+typedef std::shared_ptr<Sprite> SpritePtr;
 
 #endif
 
 
 #ifndef HEADER_SUPERTUX_VIDEO_FONT_PTR_HPP
 #define HEADER_SUPERTUX_VIDEO_FONT_PTR_HPP
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 class Font;
-typedef boost::shared_ptr<Font> FontPtr;
+typedef std::shared_ptr<Font> FontPtr;
 
 #endif
 
 
 private:
   static const int s_LIGHTMAP_DIV = 5;
 
-  boost::shared_ptr<GLTexture> m_lightmap;
+  std::shared_ptr<GLTexture> m_lightmap;
   int m_lightmap_width;
   int m_lightmap_height;
   float m_lightmap_uv_right;
 
   const SurfacePartRequest* surfacepartrequest
     = (SurfacePartRequest*) request.request_data;
   const Surface* surface = surfacepartrequest->surface;
-  boost::shared_ptr<GLTexture> gltexture = boost::dynamic_pointer_cast<GLTexture>(surface->get_texture());
+  std::shared_ptr<GLTexture> gltexture = std::dynamic_pointer_cast<GLTexture>(surface->get_texture());
   GLSurfaceData *surface_data = reinterpret_cast<GLSurfaceData *>(surface->get_surface_data());
 
   float uv_width = surface_data->get_uv_right() - surface_data->get_uv_left();
 
 SDLPainter::draw_surface(SDL_Renderer* renderer, const DrawingRequest& request)
 {
   const Surface* surface = static_cast<const SurfaceRequest*>(request.request_data)->surface;
-  boost::shared_ptr<SDLTexture> sdltexture = boost::dynamic_pointer_cast<SDLTexture>(surface->get_texture());
+  std::shared_ptr<SDLTexture> sdltexture = std::dynamic_pointer_cast<SDLTexture>(surface->get_texture());
 
   SDL_Rect dst_rect;
   dst_rect.x = request.pos.x;
   const SurfacePartRequest* surface = (const SurfacePartRequest*) request.request_data;
   const SurfacePartRequest* surfacepartrequest = (SurfacePartRequest*) request.request_data;
 
-  boost::shared_ptr<SDLTexture> sdltexture = boost::dynamic_pointer_cast<SDLTexture>(surface->surface->get_texture());
+  std::shared_ptr<SDLTexture> sdltexture = std::dynamic_pointer_cast<SDLTexture>(surface->surface->get_texture());
 
   SDL_Rect src_rect;
   src_rect.x = surfacepartrequest->srcrect.p1.x;
 
 #ifndef HEADER_SUPERTUX_VIDEO_SURFACE_PTR_HPP
 #define HEADER_SUPERTUX_VIDEO_SURFACE_PTR_HPP
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 class Surface;
-typedef boost::shared_ptr<Surface> SurfacePtr;
+typedef std::shared_ptr<Surface> SurfacePtr;
 
 #endif
 
 
 #include <config.h>
 
 #include <map>
+#include <memory>
 #include <set>
 #include <string>
 #include <vector>
-#include <boost/weak_ptr.hpp>
 
 #include "util/currenton.hpp"
 #include "video/glutil.hpp"
 private:
   friend class Texture;
 
-  typedef std::map<std::string, boost::weak_ptr<Texture> > ImageTextures;
+  typedef std::map<std::string, std::weak_ptr<Texture> > ImageTextures;
   ImageTextures m_image_textures;
 
   typedef std::map<std::string, SDL_Surface*> Surfaces;
 
 #ifndef HEADER_SUPERTUX_VIDEO_TEXTURE_PTR_HPP
 #define HEADER_SUPERTUX_VIDEO_TEXTURE_PTR_HPP
 
-#include <boost/shared_ptr.hpp>
+#include <memory>
 
 class Texture;
-typedef boost::shared_ptr<Texture> TexturePtr;
+typedef std::shared_ptr<Texture> TexturePtr;
 
 #endif